online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon m-o-m vom 15.07.2021, 09:16 Options

Lösung

Leerzeilen im markierten Bereich löschen

Hallo an Alle *Z*z,

Version: Excel 2003
Ich habe das folgende Problem, was in den bisherigen Threads nicht gänzlich gelöst wurde:

Ich habe veschiedenste Tabellen mit Leerzeilen. Jetzt möchte ich die Leerzeilen löschen, ABER nur für den Bereich, den ich markiert habe.


Gefunden habe ich das folgende Makro von nighty:

Sub LeereZeilenLoeschen()
Worksheets(1).Range(Cells(1, 1), Cells(Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row, Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column)).AutoFilter Field:=1, Criteria1:="="
Worksheets(1).Rows("2:" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row).Delete Shift:=xlUp
Worksheets(1).Range(Cells(1, 1), Cells(Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row, Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column)).AutoFilter
End Sub

Schonmal vorab vielen Dank für Eure Mühen.

Gruß Maik


Antwort schreiben

Antwort 1 von Hajo_Zi vom 15.07.2021, 09:37 Options

Hallo Maik,

Sub Leerzeilen_loeschen_Selection()
' alle Leerzeilen löschen im markierten Bereich
Dim LoI As Long
Dim RaZeile As Range
For LoI = Range(Mid(Selection.Address, InStr(1, Selection.Address, ":") + 1)).Row To Range(Selection.Address).Row Step -1
If Application.WorksheetFunction.CountA(Rows(LoI)) <> ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column Then
If Rows(LoI).SpecialCells(xlCellTypeBlanks).Count = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column Then
If RaZeile Is Nothing Then
Set RaZeile = Rows(LoI)
Else
Set RaZeile = Union(RaZeile, Rows(LoI))
End If
End If
End If
Next LoI
If Not RaZeile Is Nothing Then RaZeile.Delete
Set RaZeile = Nothing
End Sub

Gruß Hajo

Antwort 2 von Beverly vom 15.07.2021, 09:38 OptionsLösung

Lösung
Hi Maik,
Sub loeschen()
    Dim loZeile As Long
    For loZeile = Selection.Cells(1).Row + Selection.Rows.Count To Selection.Cells(1).Row Step -1
        If Application.WorksheetFunction.CountA(Rows(loZeile)) = 0 Then Rows(loZeile).Delete
    Next loZeile
End Sub

Bis später,
Karin

Antwort 3 von m-o-m vom 15.07.2021, 09:50 Options

Hallo Hajo,
hallo Karin,

Super Hilfe, beides funzt.

Besten Dank für die Antwort in 21 bzw 22 Minuten.

DAS NENNE ICH SUPPORT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Leider kann ich nur eine Antwort als Lösung auswählen. Habe mich für die schlankere entschieden, obwohl ich nicht wirklich verstehe was da eigentlich passiert.

Vielen Dank nochmal

Gruß Maik

Antwort 4 von Beverly vom 15.07.2021, 10:43 Options

Hi Maik,

mit dem Code wird in einer Schleife von der letzten Zeile des selektierten Bereichs bis zur ersten Zeile des selektierten Bereichs gelaufen. Dabei wird geprüft, ob in der Zeile (in irgendeiner Zelle) ein Wert steht - Application.WorksheetFunction.CountA ist die VBA-Version der Tabellenblattfunktion ANZAHL2. Ist also ANZAHL2(loZeile:loZeile) = 0, dann wird die Zeile gelöscht.

Bis später,
Karin

Ähnliche Themen

Zeile mit "Auftrag" + Leerzeilen löschen (Makro)
SteffenL  07.03.2008 - 39 Hits - 2 Antworten

Summenprodukt Bereich verschieben
Metty2  08.05.2008 - 54 Hits - 2 Antworten

Eckpunkte eines markierten Bereichs(VBA)
Kauz  28.08.2008 - 5 Hits - 4 Antworten

Leerzeilen zwischen nicht aufeinanderfolgenden Werten einfügen.
SMT  05.11.2008 - 11 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 09:21:55 2026