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

For-Schleife funktioniert nicht richtig

Forumthread: For-Schleife funktioniert nicht richtig

For-Schleife funktioniert nicht richtig
31.03.2015 11:58:29
Larissa
Hallo Leute!
Ich habe folgendes Problem:
Hier ein kleiner Code-Ausschnitt:
Sub Löschen()
For a = 1 To 100
If IsEmpty(Range("E" & a)) Then
Rows(a).Delete Shift:=xlUp
End If
Next a
End Sub
Wie die Methode schon richtig ausdrückt möchte ich ganze Zeilen löschen. Und zwar genau diejenigen, die in der Spalte E leer sind. Die Funktion funktioniert soweit nur, dass beim erstmaligen Starten nur ein Bruchteil der leeren Zellen gefunden und daraufhin die Zeilen gelöscht werden. Starte ich das Makro dreimal dann habe ich das gewünschte Ergebnis. Wo liegt hier der Fehler?

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For-Schleife funktioniert nicht richtig
31.03.2015 12:01:00
Klaus
Hallo Larissa,
Grund:
a sei Zeile 16. Löscht du Zeile 16, dann rutscht "ehemals" Zeile 17 in Zeile 16 hoch. a springt um auf 17 und prüft, was vorher Zeile 18 war. Die Zeile 17 hat sich "versteckt".
Lösung:
Rückwärts löschen!
Sub Löschen()
For a = 100 To 1 step -1
If IsEmpty(Range("E" & a)) Then
Rows(a).Delete Shift:=xlUp
End If
Next a
End Sub
Anmerkung:
Es gibt, grad bei großen Datenmengen, sehr viel schnellere und elegantere Löschmakros die ganz ohne Schleifen auskommen. Interesse?
Grüße,
Klaus M.vdT.

Anzeige
machs rückwärts ...
31.03.2015 12:01:25
Matthias
Hallo
For a = 100 To 1 Step -1
Gruß Matthias

AW: machs rückwärts ...
31.03.2015 12:42:20
Larissa
Vielen lieben Dank für eure Antwort.
Jetzt habe ich folgendes Problem. Es sollen nicht nur die Zeilen gelöscht werden die leer sind, sondern auch wenn in E... keine Zahl drin steht. Gibt es da auch einen passenden Befehl und wenn ja wie muss ich die Methode ändern?
Lieben Dank schon mal!

Anzeige
AW: machs rückwärts ...
31.03.2015 13:02:37
Markus
Hallo Laura
Löschen bei leerer Zelle oder nichtnumerischem Wert:
Sub Löschen()
For a = 100 To 1 Step -1
If IsEmpty(Range("E" & a)) Or Not IsNumeric(Range("E" & a) Then
Rows(a).Delete
End If
Next a
End Sub
Gruss Markus

AW: For-Schleife funktioniert nicht richtig
31.03.2015 12:03:50
Alexander
Hallo Larissa,
das kann daran liegen das du eine Zeile löschst aber bei der Schleife eine Zeile weiter springst.
Wenn eine Zeile gelöscht wird musst du die gleiche Zeile noch ein mal überprüfen.
Das müsste so klappen
Sub Löschen()
For a = 1 To 100
If IsEmpty(Range("E" & a)) Then
Rows(a).Delete Shift:=xlUp
a = a - 1
End If
Next a
End Sub
Gruß Alex

Anzeige
lieber nicht, Alex!
31.03.2015 12:14:04
Klaus
Hi Alex,
den Zähler innerhalb der Schleife zu manipulieren funktioniert zwar, ist aber ganz schlechter Stil. Kann bei anderen Schleifenoperationen durchaus Probleme verursachen. Diese Lösung würde ich eher nicht umsetzen!
Grüße,
Klaus M.vdT.

AW: lieber nicht, Alex!
31.03.2015 12:15:52
Alexander
Hallo Klaus,
Das war mir bis jetzt noch nicht bekannt. Danke für den Tipp
Gruß Alex
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige