Excel07: Leere Zeilen mit Makro löschen

Hallo Experten!
Als Gelegenheits-Makroschreiber habe ich wieder einmal ein Problem. Ich bin dabei mein Kontakte zu verwalten und habe mir durch Herumwerken im Tabellenblatt zwischen meinen Daten auch Leerzeilen eingehandelt, welche ich ganz simpel mit einer If > Then Abfrage entfernen wollte. Konkret:
Range(„b1“).Select
Anfang:
If ActiveCell = „“ Then
Selection.EntireRow.Delete
GoTo Anfang
Else
End If
ActiveCell.Offset(1, 0).Select
GoTo Anfang
End Sub

Das interessante an diesem Makro ist, dass er zwar funktioniert, dann aber wieder Leerzeilen stehen lässt. Wenn ich es richtig beobachtet habe, lässt er ab drei leeren Zeilen eine über, dh. er löscht sie nicht. Aber warum?
Vorweg besten Dank für Eure Antworten und
freundliche Grüsse
wiedhalm

Moin,

für „a1“ setzt Du die Spalte, die auf leere Zellen zu prüfen ist.

Gruß Ralf

  Sub leere_raus()
'
    Dim fr  As Long         ' firstrow
    Dim lr  As Long         ' lastrow
    Dim i   As Long
    
    ActiveCell.SpecialCells(xlLastCell).Select
    lr = ActiveCell.Row
    lr = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

    Range("a1").Select
                                ' leere suchen und löschen
    For i = lr To fr Step -1
        If Cells(i, 1).Value = "" Then
            Rows(i).Delete
        End If
    Next i

  End Sub


ps:

Ich zähle von unten rauf, weil ich in der umgekehrten Richtung nie weiß, was schon weg ist - oder vielleicht noch da ':wink:

Gruß Ralf

o je!

so geht’s, wenn bis zur letzten Sekunde noch verschlimmbessert wird …

Hier der richtige Code:

    Dim lr  As Long         ' lastrow
    Dim i   As Long
    
    ActiveCell.SpecialCells(xlLastCell).Select
    lr = ActiveCell.Row

    Range("a1").Select
                                ' leere suchen und löschen
    For i = lr To 1 Step -1
        If Cells(i, 1).Value = "" Then
            Rows(i).Delete
        End If
    Next i


Dim lr  As Long         ' lastrow
Dim i   As Long

ActiveCell.SpecialCells(xlLastCell).Select
lr = ActiveCell.Row

Range("a1").Select
                            ' leere suchen und löschen
For i = lr To 1 Step -1
    If Cells(i, 1).Value = "" Then
        Rows(i).Delete
    End If
Next i

Hallo Ralf!
Besten Dank für den Code, aber leider tut er auch nicht das, was ich erwarte.
Wenn ich die, von dir korrigierte Version laufen lasse - und zwar in dem ich meine Datensätze in ein jungfräuliches Tabellenblatt kopiere - so erhalte ich ebenfalls in unregelmässigen Abständen Leerzellen. Diese jedoch immer nur als einzelne Leerzelle und nicht wie bei meinem Code einmal eine, dann wieder wieder zwei hintereinander.
Nochmals besten Dank für deine Bemühungen, aber ich werde die von meinem Code nicht gefressenen Leerzellen mit einem manuell betreibbaren Zellenlöscher herausputzen.
Freundliche Grüsse
wiedhalm

Moin,

hast Du mal geprüft, ob die Leerzeilen wirklich leer sind, also keine Leerzeichen enthalten? Falls solche vorkommen dürfen, würde

   If Cells(i, 1).Value = "" _ 
   Or Cells(i, 1).Value = " " Then

helfen.

Gruß Ralf

1 Like

Hallo Ralf!

Die Ergänzung von heute hat gewirkt, jetzt arbeitet der Code so wie ich es mir vorgestellt habe. Er wird sofort in meine Sammlung aufgenommen, damit ich ihn nächstes Jahr bei der Adressaktualisierung wieder zur Hand habe.
Nochmals besten Dank für deine Bemühungen und
freundliche Grüsse
wiedhalm