online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon vollmondgierig vom 26.10.2020, 12:31 Options

Lösung

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

Lösung
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 vom 26.10.2020, 13:06 Options

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.

Antwort 4 von vollmondgierig vom 26.10.2020, 13:30 Options

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

Antwort 7 von vollmondgierig vom 27.10.2020, 14:32 Options

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.

Ähnliche Themen

Doppelte Einträge löschen Excel VBA
debrö  30.04.2007 - 677 Hits - 15 Antworten

Zahl in Spalte A suchen und per VBA Zeile löschen
Elhamplo  01.06.2007 - 81 Hits - 3 Antworten

per VBA in EXCEL Buchstaben löschen
sven0207  19.10.2007 - 113 Hits - 7 Antworten

VBA - Zeile ? bis letzte Zeile markieren ...
Tomschi  03.04.2008 - 120 Hits - 7 Antworten

Excel: Zeile bei Wort "......" löschen
detommy  15.05.2008 - 13 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026