Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Marco für Leerzeilen löschen

Forumthread: Marco für Leerzeilen löschen

Marco für Leerzeilen löschen
04.08.2004 13:36:09
Frank
Hallo
Ich habe eine Exceltabelle, in der viele Leerzeilen sind.
Wird aus enem anderen Programm generiert.
Wie kann ich diese durch ein Makro alle löschen?
Danke im voraus
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Marco für Leerzeilen löschen
04.08.2004 14:25:22
WernerB.
Hallo Frank,
wie gefällt Dir das?

Sub LeerZeilenKiller()
Dim i As Long, laR As Long
On Error Resume Next
laR = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
On Error GoTo 0
If laR = 0 Then Exit Sub
Application.ScreenUpdating = False
For i = laR To 1 Step -1
If WorksheetFunction.CountA(Rows(i)) = 0 Then
Cells(i, 1).EntireRow.Delete
End If
Next i
Application.ScreenUpdating = True
End Sub

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
AW: Marco für Leerzeilen löschen
05.08.2004 14:25:14
Frank
Leider löscht dieses Makro nur die oberste Zeile
Hier ein Teil Muster von so einer Tabelle
https://www.herber.de/bbs/user/9247.xls
Gruss Frank
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.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige