VBA Code endet?

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

HoiHermann 
Fragesteller
 18.01.2022, 07:55

Vielen Dank! Es hat funktioniert.

1