Moin,
in deinem Code wird die Zählvariable irow ständig erhöht, d.h. beim Löschen die darunter liegenden Zeilen hochgeschoben - somit zwei aufeinanderfolgende, gleiche Zeilen nicht erkannt!
Daher immer vom Ende nach Oben mit Step -1
Nächstes Manko - die Interior-Eigenschaft einer leeren, unbenutzten Zelle ist niemals xlNone.
Denn xlNone ergibt -4132 statt der abgefragten 16777215 (RGB).
Nur Interior.ColorIndex kennt xlNone!
Und EntireRow ist eine Eigenschaft, kann also niemals ohne Bezug zu seinem Range-Objekt (Cells(irow, 6)) im Code stehen.
LG
PS - Application.ScreenUpdating schont Augen und Prozessor ;)
Option Explicit
Sub Test()
'angenommen wird das aktive Tabellenblatt
Dim irow As Long, lastrow As Long 'Zeilen sind immer LONG
Application.ScreenUpdating = False
lastrow = lZeile(6) 'letzte Zeile (hattu schon)
For irow = lastrow To 8 Step -1
With Cells(irow, 6)
If .Value = "" And .Interior.ColorIndex = xlNone Then _
.EntireRow.Delete
End With
Next irow
Application.ScreenUpdating = True
End Sub
Function lZeile(ByVal Spalte As Long) As Long
lZeile = Cells(Rows.Count, Spalte).End(xlUp).Row
End Function
|