Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: vba code schneller machen

vba code schneller machen
22.04.2008 10:23:52
Christian
hallo allle
ich habe einen vba code zusammengebastelt zum sortieren von datum, weil nie richtig sortiert wurde
wegen zeichen umwandlung .
jetzt funkt der vba code aber leider dauert er zu lange-
wer kann den code etwas beschleunigen oder kürzen damit das nicht sooooo lange dauert.

Private Sub CommandButton1_Click()
'datum umwanden ln in zahlen
Application.ScreenUpdating = False
Range("IV1").Select
Selection.Copy
Application.Goto Reference:="datum"
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
Application.Goto Reference:="Database"
Application.CutCopyMode = False
Selection.Sort Key1:=Range("E5"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'loescht alle nuller der umwandlung
Dim strg As String
Dim C As Variant
strg = "0"
For Each C In Worksheets("Daten").Range("E1:E1500")
If C.Value = strg Then
C.ClearContents
End If
Next
'sortieren und format zuweisen
Application.Goto Reference:="Database"
Selection.Sort Key1:=Range("E5"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.Goto Reference:="datum"
Selection.NumberFormat = "dd/mm/yyyy;@"
'zur letzten zeile
Sheets("Daten").Select
Cells(Cells.Rows.Count, 4).End(xlUp).Select
Application.ScreenUpdating = False
End Sub


danke
gruss
christian neu

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba code schneller machen
22.04.2008 10:53:55
UweD
Hallo
- auf select kann verzichtet werden.Gruß UweD
- anstatt alle Zellen im Bereich einzeln auf 0 zu prüfen, geht der find schneller
VB-Code:

Private Sub CommandButton1_Click()
    'datum umwanden ln in zahlen
    Application.ScreenUpdating = False
    Range("IV1").Copy
    Range("datum").PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
        SkipBlanks:=False, Transpose:=False
    Range("Database").Sort Key1:=Range("E5"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    'loescht alle nuller der umwandlung
    Dim strg As String
    Dim C As Variant
    Dim firstAddress
    strg = "0"
    With Worksheets("Daten").Range("E1:E1500")
        Set C = .Find(strg, LookIn:=xlValues)
        If Not C Is Nothing Then
            Do
                C.ClearContents
                Set C = .FindNext(C)
            Loop While Not C Is Nothing
        End If
    End With
    'sortieren und format zuweisen
    Range("Database").Sort Key1:=Range("E5"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("Datum").NumberFormat = "dd/mm/yyyy;@"
    'zur letzten zeile
    Sheets("Daten").Cells(Cells.Rows.Count, 4).End(xlUp).Select
End Sub
Gruß UweD
(Rückmeldung wäre schön)

Anzeige
AW: vba code schneller machen (update)
22.04.2008 10:59:00
UweD
Hallo nochmal
die eine Zeile muß du noch tauschen: sonst löscht das Makro auch z.b. 10
Set C = .Find(strg, LookIn:=xlValues, LookAt:=xlWhole)

AW: vba code schneller machen
22.04.2008 11:07:58
Christian
hi uwe d
danke das du dir diese mühe machst.
ich kann in wirklichkeit keine beschleunigung feststellen.
ich versuche gerades den code in 3 teile mit 3 commandbuttons zu teilen.
das erstaunliche ist das dann alle drei prozeduren nicht mal 2 sekunde dauern.wenn ich sie einzeln ausführe.
hingegen alle zusammen dauern ca. 20sec.
eigenartig?
hast du noch eine idee
vielen dank
gruss
christian neu
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige