Sortierung in VBA
18.03.2007 12:05:05
Steve
Ich habe eine große Tabelle, aus der ich Werte herauslösche und die ich dann neu sortieren will. Danach wird sie in eine andere Tabelle kopiert. Die Sortierung habe ich mit dem Makro-Rekorder aufgezeichnet.
Wenn ich die Sortierung in der eigentliche Tabelle machen will, passiert nichts, die Werte werden unsortiert übernommen. Mache ich die Sortierung erst nach dem Kopieren geht es. Weiß einer warum?
----- so geht es nicht -----
'alle Einträge die nicht FORWARD sind löschen
For i = 1 To 40
If ActiveWorkbook.ActiveSheet.Cells(i, 1) "FORWARD" Then
ActiveWorkbook.ActiveSheet.Rows(i).ClearContents
End If
Next i
'restliche Einträge sortieren
ActiveWorkbook.ActiveSheet.Columns("B:B").Select
Range("A1:C36500").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'Werte kopieren
ActiveWorkbook.ActiveSheet.Range("A1:C36500").Copy
'Werte einfügen
ThisWorkbook.Sheets("FORWARD").Range("A1:C36500").PasteSpecial Paste:=xlPasteValues
----- so geht es nicht -----
----- so geht es -----
'alle Einträge die nicht FORWARD sind löschen
For i = 1 To 36000
If ActiveWorkbook.ActiveSheet.Cells(i, 1) "FORWARD" Then
ActiveWorkbook.ActiveSheet.Rows(i).ClearContents
End If
Next i
'Werte kopieren
ActiveWorkbook.ActiveSheet.Range("A1:C36500").Copy
ThisWorkbook.Sheets("FORWARD").Range("A1:C36500").PasteSpecial Paste:=xlPasteValues
...
'restliche Einträge sortieren
ThisWorkbook.Sheets("FORWARD").Columns("B:B").Select
Range("A1:C36500").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
----- so geht es -----
Eigentlich wollte ich es ohne Sortierung machen und die Zeilen löschen, aber da kommt mein Zähler durcheinander:
For i = 1 To 36000
If ActiveWorkbook.ActiveSheet.Cells(i, 1) "FORWARD" Then
ActiveWorkbook.ActiveSheet.Rows(i).Delete Shift:=xlUp
i = i - 1 'i auch um 1 zurücksetzen
End If
Next i
Ist ja klar, daß er dann in eine Endlosschleife läuft...
Steve