VBA EXCEL Zeile löschen
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 schreiben
Antwort 1 von Hajo_Zi vom 26.10.2020, 12:49 OptionsLösung
Hallo Nick,
Dein Code hat einen entscheidenen Fehler, beim Löschen von Zeilen sollte man von Hinten nach vorne arbeiten.
Gruß Hajo
soll ich dann also
for i = 20 to 7
schreiben? Geht das?
Antwort 3 von coros vom 26.10.2020, 13:27 Options
Hallo vollmondgierig,
das muss
for i = 20 to 7 Step -1
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.
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
Antwort 5 von nighty vom 27.10.2020, 14:16 Options
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
Antwort 6 von nighty vom 27.10.2020, 14:27 Options
hi all :-)
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 Sub
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?
Antwort 8 von nighty vom 27.10.2020, 14:40 Options
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
Antwort 9 von nighty vom 27.10.2020, 14:41 Options
hi all :-)
oh waren ja deklariert :-)))
gruss nighty
Antwort 10 von coros vom 27.10.2020, 14:43 Options
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.