Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1416to1420
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
Inhaltsverzeichnis

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?

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!

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

Anzeige
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

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.

Anzeige
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

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige