AW: Marco für Leerzeilen löschen
06.08.2004 07:56:18
WernerB.
Hallo Frank,
das Makro konnte nicht funktionieren, weil Deine Leerzeilen nicht wirklich "leer" sind. Sie enthalten nämlich Zellen, in denen mehrere Leerzeichen stehen. Auch "Leer"-Zeichen sind eben Zeichen (wenn auch nicht sichtbar), und damit sind die betreffenden Zellen bzw. Zeilen eben nicht "leer".
Ich habe es jetzt so gelöst, dass sich das Makro zur Bestimmung, ob eine Zeile "leer" ist, nur am Inhalt jeder Zelle in der Spalte "B" orientiert; dazu wierden die Zellen in der Spalte "B" mit dem Makro vorab von überflüssigen Leerzeichen gesäubert (entsprechend der Tabellenblattfunktion "=GLÄTTEN()").
Dabei werden dann allerdings auch die führenden und abschließenden Leerzeichen bei einigen Texten in der Spalte "B" entfernt; dies musst Du dabei leider in Kauf nehmen.
So sollte es jetzt mit den o. a. Einschränkungen - klappen:
Sub LeerZeilenKiller()
Dim i As Long, laR1 As Long, laR2 As Long
Dim c As Range
Application.ScreenUpdating = False
laR1 = Cells(Rows.Count, 2).End(xlUp).Row
For Each c In Range("B1:B" & laR1)
c.Value = WorksheetFunction.Trim(c.Text)
Next c
On Error Resume Next
laR2 = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
On Error GoTo 0
If laR2 = 0 Then Exit Sub
For i = laR2 To 1 Step -1
If Cells(i, 2).Value = "" Then
Cells(i, 1).EntireRow.Delete
End If
Next i
Application.ScreenUpdating = True
End Sub
Gruß
WernerB.