Supportnet / Forum / Tabellenkalkulation
VBA EXCEL Zeile löschen
Frage
Ich habe ein Problem mit dem Befehl
"Rows(1).Delete"
Ich frage mit einer Schleife ab ob eine bestimmte Zelle leer ist und wenn dem so ist, soll die gesamte Zeile gelöscht werden.
Hier die Schleife:
For i = 7 To 20
If Cells(i, 2).Value = "" Then
Rows(i).EntireRow.Delete
End If
Next i
Leider werden aber so nur die Inhalte gelöscht, nicht die komplette Zeile. Was habe ich falsch gemacht?
Antwort 1 von Hajo_Zi
Hallo Nick,
Dein Code hat einen entscheidenen Fehler, beim Löschen von Zeilen sollte man von Hinten nach vorne arbeiten.
Gruß Hajo
Dein Code hat einen entscheidenen Fehler, beim Löschen von Zeilen sollte man von Hinten nach vorne arbeiten.
Gruß Hajo
Antwort 2 von vollmondgierig
soll ich dann also
for i = 20 to 7
schreiben? Geht das?
for i = 20 to 7
schreiben? Geht das?
Antwort 3 von coros
Hallo vollmondgierig,
das muss
lauten.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
das muss
for i = 20 to 7 Step -1lauten.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 4 von vollmondgierig
danke euch beiden für die wahnsinnig schnellen antworten!
@Oliver: ich hatte mir inzwischen zwar schon eine whileschleife gebaut, aber deine lösung gefällt mir besser
@Oliver: ich hatte mir inzwischen zwar schon eine whileschleife gebaut, aber deine lösung gefällt mir besser
Antwort 5 von nighty
hi all :-)
mann muss nicht unbedingt von hinten anfangen,es gibt etliche alternativen und variablen,ich seh das rueckwaerts lesen in diesem falle als bequemlichkeit an aber nicht als unbedingten fehler
gruss nighty
mann muss nicht unbedingt von hinten anfangen,es gibt etliche alternativen und variablen,ich seh das rueckwaerts lesen in diesem falle als bequemlichkeit an aber nicht als unbedingten fehler
gruss nighty
Antwort 6 von nighty
hi all :-)
alternativ ohne schleife
gruss nighty
alternativ ohne schleife
gruss nighty
Sub LöschenNachFilter()
Worksheets(1).Range(Worksheets(1).Cells(1, 1), Worksheets(1).Cells(Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row, Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column)).AutoFilter Field:=1, Criteria1:="="
Worksheets(1).Rows("2:" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row).Delete Shift:=xlUp
Worksheets(1).Range("A1").AutoFilter
End SubAntwort 7 von vollmondgierig
ich hab mittlerweile ein neues problem.
ist nur ne kurze frage
bei "p=x/y"
bekomme ich die Fehlermeldung "Überlauf"
x und y sind integer-variablen
p ist long
was hab ich falsch gemacht?
ist nur ne kurze frage
bei "p=x/y"
bekomme ich die Fehlermeldung "Überlauf"
x und y sind integer-variablen
p ist long
was hab ich falsch gemacht?
Antwort 8 von nighty
hi all :-)
der ueberlauf ist durch division durch null entstanden,weise den variablen ,die im uebrigen zur zeit variant sind und nicht deklariert sind einen wert zu :-))
gruss nighty
der ueberlauf ist durch division durch null entstanden,weise den variablen ,die im uebrigen zur zeit variant sind und nicht deklariert sind einen wert zu :-))
gruss nighty
Antwort 9 von nighty
hi all :-)
oh waren ja deklariert :-)))
gruss nighty
oh waren ja deklariert :-)))
gruss nighty
Antwort 10 von coros
Hallo vollmondgierig,
der Wert in eine der beiden Variablen x oder y ist größer der Zahl 32.767. Deklariere die beiden Variablen ebenfalls als Long und es sollte funktionieren.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
der Wert in eine der beiden Variablen x oder y ist größer der Zahl 32.767. Deklariere die beiden Variablen ebenfalls als Long und es sollte funktionieren.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

