Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
852to856
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Sortierung in VBA

Sortierung in VBA
18.03.2007 12:05:05
Steve
Hallo!
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

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortierung in VBA
20.03.2007 05:55:53
Hans
Hallo Steve,
du musst von hinten anfangen:

Sub DeleteAndSort()
Dim lRow As Long, lRowL As Long
Application.ScreenUpdating = False
lRowL = Cells(Rows.Count, 1).End(xlUp).Row
For lRow = lRowL To 2 Step -1
If Cells(lRow, 1).Value  "FORWARD" Then Rows(lRow).Delete
Next lRow
Application.ScreenUpdating = True
End Sub
Gruss hans
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige