2k Aufrufe
Gefragt in Tabellenkalkulation von petra65 Experte (1.8k Punkte)
Hi,

ich setze unten stehendes Makro in 2 Auswertungen ein, bei der einen funktioniert es tadellos, bei der anderen nicht. Der Code bei beiden Auswertungen ist vollkommen identisch, nur unten stehender Ausschnitt nicht (in der anderen Tabelle werden die Zellen gelöscht wenn G leer ist).

Es sollen alle Zeilen ab A5 gelöscht werden, wenn H leer ist!
Es werden mir aber 5 Zellen am Ende angezeigt, bei denen H leer ist !! ??

Dim lngLetzte As Long
Dim lngZeile As Long
lngLetzte = IIf(IsEmpty(Range("H65536")), Range("H65536").End(xlUp).Row + 1, 65536)
For lngZeile = lngLetzte To 5 Step -1
If Cells(lngZeile, 8) = "" Then
Cells(lngZeile, 8).EntireRow.Delete
End If
Next

Ich sehe den Fehler einfach nicht ;-(

Gruss - Petra

7 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Petra,

bei mir funktioniert das Makro einwandfrei.

Kann es sein, dass sich in den vermeintlich leeren Zellen evtl.
Leerzeichen befinden?

Gruß
Rainer
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Nachtrag:

Auch eine Formel mit dem Ergebnis "" kann den Fehler hervorrufen.

Gruß
Rainer
0 Punkte
Beantwortet von petra65 Experte (1.8k Punkte)
Hi Rainer,

nein - leider nicht, die Werte dieser Zellen werden in der Grundtabelle per Hand eingetragen, und sind auch absolut leer (zumindest sehe ich nichts).

Ich habe mal nur den Codeteil getestet, dann wurde mir per Klick nur 1 Zeile gelöscht ... ist das logisch ??

In dem kompletten Makro werden die Zeilen auch sortiert (nach Spalte E), dieses Sortieren fand vor dem Löschen statt.
Ich hab dann einfach mal die Reihenfolge geändert (nun werden erst die Zeilen gelöscht und dann sortiert).
Und auf den "ersten Blick" scheint es zu funktionieren.
Mich würde ja schon interessieren WARUM das so ist !??


Gruss - Petra
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Petra,

Und auf den "ersten Blick" scheint es zu funktionieren.
Mich würde ja schon interessieren WARUM das so ist !??


...das kann ich (wenn überhaupt) leider nicht beurteilen, da ich weder
Code noch Tabelle kenne.

Meine Aussage bezog sich nur auf den von Dir geposteten Code.

Gruß
Rainer
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

eine schleife ist hier unnoetig :-))

gruss nighty

eine alternative waere unter anderen

Sub FilterLoeschen()
Worksheets(1).Columns("B").AutoFilter Field:=1, Criteria1:="="
Worksheets(1).Rows("2:" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Delete Shift:=xlUp
Worksheets(1).Columns("B").AutoFilter
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

hier noch eine moegliche variante :-)

gruss nighty

Sub Loeschen()
Worksheets(1).Columns("B").EntireRow.SpecialCells(xlBlanks).EntireRow.Delete
End Sub
0 Punkte
Beantwortet von petra65 Experte (1.8k Punkte)
@Rainer: ja logisch - hab ich nicht bedacht ;-(

@Nighty: mit der Variante aus Antw. 5 funktioniert es, vielen Dank


Vielen Dank für Eure Hilfe ..

Gruss - Petra
...