Supportnet Computer
Planet of Tech

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

Antwort 2 von vollmondgierig

soll ich dann also

for i = 20 to 7

schreiben? Geht das?

Antwort 3 von coros

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.

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

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

Antwort 6 von nighty

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


Antwort 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?

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

Antwort 9 von nighty

hi all :-)

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.