VBA Code endet?
Hallo zusammen
Ich habe einen VBA Code erstellt, welcher die gesamte Zeile löscht, wenn in der Spalte L "Löschen" steht. Dieser funktioniert auch so weit jedoch endet das Makro bevor alle Zeilen mit "Löschen" gelöscht sind. Und ich muss das Makro mehre Male ausführen damit alle "Löschen" weg sind.
Vielen Dank für eure Antworten
2 Antworten
Er geht Zeile für Zeile durch. Sagen wir aktuell ist er in Zeile 50 und ab da sollen alle Zeilen gelöscht werden, da in jeder Zeile "Löschen steht". Er löscht also nun die Zeile 50. Ist die Zeile gelöscht wird neu nummeriert von Excel. Die nachfolgende Zeile 51 wird zur Zeile 50. (weil würdest du z.B. alle Zeilen von 1 bis 32.000 löschen, dann hätte das gesamte Tabellenblatt keine Zeilen mehr.)
Der Zähler ist nun bei Zeile 51, im Tabellenblatt entspricht das der alten Zeilennummer 52. Also wird bei jedem Löschen eine Zeile übersprungen in deinem Code. Deshalb ist hinterher nicht alles gelöscht.
UNGETESTET
Wegen dem beschribenen Effekt von Elumania löst man daher besser von "unten" nach "oben".
i = 2000
Do while Worksheetfunction.Countif(Range("L2:L2000"), "Löschen") > 0 'Die Schleife muss nur laufen, wenn überhaupt ein "Löschen" vorkommt.
if Range("L" & i).Value = "Löschen" then
Rows(i & ":" & i).EntireRow.Delete 'In dieser Zeile bin ich mit dem Objekt "Rows" nicht ganz sicher.
End if
i=i-1
loop