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

leere Zeilen löschen mit VBA

Forumthread: leere Zeilen löschen mit VBA

leere Zeilen löschen mit VBA
03.07.2003 15:20:20
Frank
Hallo,
in einer Tabelle in Spalte A stehen in unregelmäßigen Abständen Werte. Alle leeren Zellen
dazwischen möchte ich löschen. Ich habe folgendes Makro probiert:

Sub Test()
Dim i As Integer
Range("A1").Select
For i = 1 To 200
If ActiveCell.Value = "" Then Rows.Delete
Next i
End Sub

Dabei löscht er mir jedoch auch Zeilen in denen Werte stehen. Der Autofilter soll nicht be-
nutzt werden. Bitte um Hilfe.
Gruß
Frank
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: leere Zeilen löschen mit VBA
03.07.2003 15:22:46
TinoS
Hi, versuch es mal hiermit:

Sub Test()
Dim i As Integer
Range("A1").Select
For i = 1 To 200
'---->
cells(i,1).select
'<----
If ActiveCell.Value = "" Then Rows.Delete
Next i
End Sub

Gruß Tino S.

AW: leere Zeilen löschen mit VBA
03.07.2003 15:27:47
Frank
Hallo Tino,
das funktioniert leider auch nicht. Er löscht alle Zeilen.
Gruß
Frank

Anzeige
AW: leere Zeilen löschen mit VBA
03.07.2003 15:34:12
TinoS
Sorry, Denkfehler:

Sub Test()
Dim i As Long
Dim zeile As Long
Dim ende As Long
Range("A1").Select
ende = Range("A65536").End(xlUp).Row
Do Until i = ende
If ActiveCell.Value = "" Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
i = i + 1
Loop
End Sub

Gruß Tino

Anzeige
AW: leere Zeilen löschen mit VBA
03.07.2003 15:40:43
PeterW
Hallo Frank (und Timo),
in VBA kann fast immer auf Select verzichtet werden. Löschen ist sicherer von unten nach oben:

Sub Test()
Dim lgCount As Long
Dim lgLetzte As Long
lgLetzte = Range("A65536").End(xlUp).Row
For lgCount = lgLetzte To 1 Step -1
If IsEmpty(Cells(lgCount, 1)) Then
Cells(lgCount, 1).Delete shift:=xlUp
End If
Next
End Sub

Gruß
Peter

Anzeige
AW: leere Zeilen löschen mit VBA
03.07.2003 15:54:49
Frank
Hallo Peter,
auch Dir Danke für Deine Hilfe.
Gruß
Frank

AW: leere Zeilen löschen mit VBA
03.07.2003 15:38:23
Frank
Hallo Tino,
das sieht gut aus. Danke
Gruß
Frank

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Leere Zeilen in Excel mit VBA löschen


Schritt-für-Schritt-Anleitung

Um leere Zeilen in Excel mit einem VBA-Makro zu löschen, folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Kopiere den folgenden Code in das Modul:

    Sub LeereZeilenLoeschen()
        Dim lgCount As Long
        Dim lgLetzte As Long
    
        ' Bestimme die letzte Zeile in Spalte A
        lgLetzte = Range("A65536").End(xlUp).Row
    
        ' Durchlaufe alle Zeilen von unten nach oben
        For lgCount = lgLetzte To 1 Step -1
            If IsEmpty(Cells(lgCount, 1)) Then
                Cells(lgCount, 1).Delete Shift:=xlUp
            End If
        Next
    End Sub
  4. Schließe den VBA-Editor.

  5. Führe das Makro aus, indem Du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

Dieses Makro löscht alle leeren Zeilen in der Spalte A.


Häufige Fehler und Lösungen

  • Problem: Das Makro löscht auch Zeilen mit Werten.

    • Lösung: Stelle sicher, dass die Logik im Makro korrekt ist und die IsEmpty-Funktion verwendet wird. Die oben genannte Methode funktioniert zuverlässig.
  • Problem: Das Makro funktioniert nicht in älteren Excel-Versionen.

    • Lösung: Stelle sicher, dass Du eine Version von Excel verwendest, die VBA unterstützt (Excel 2007 oder höher).

Alternative Methoden

  1. Manuelles Löschen:

    • Markiere die leeren Zeilen, klicke mit der rechten Maustaste und wähle Löschen.
  2. Filtermethode:

    • Setze einen Filter auf die Daten, filtere nach leeren Zellen und lösche diese anschließend.
  3. Excel-Funktion:

    • Verwende die Funktion =WENN(A1="";"";A1) in einer neuen Spalte, um leere Zellen zu ignorieren und kopiere die Ergebnisse anschließend an die ursprüngliche Stelle.

Praktische Beispiele

  • Beispiel 1: Wenn Du nur leere Zeilen in Spalte A löschen möchtest, kannst Du das Makro wie oben gezeigt verwenden.

  • Beispiel 2: Um leere Zeilen in mehreren Spalten zu löschen, passe die Schleife an, um über mehrere Spalten zu iterieren.

    Sub LeereZeilenInMehrerenSpaltenLoeschen()
        Dim lgCount As Long
        Dim lgLetzte As Long
    
        lgLetzte = Range("A65536").End(xlUp).Row
    
        For lgCount = lgLetzte To 1 Step -1
            If IsEmpty(Cells(lgCount, 1)) And IsEmpty(Cells(lgCount, 2)) Then
                Cells(lgCount, 1).Delete Shift:=xlUp
            End If
        Next
    End Sub

Tipps für Profis

  • Vermeide .Select: In den meisten Fällen kann auf die Verwendung von .Select verzichtet werden, was den Code effizienter macht.
  • Testen in einer Kopie: Teste Dein Makro immer in einer Kopie Deiner Datei, um Datenverlust zu vermeiden.
  • Verwende Option Explicit: Dies zwingt Dich, alle Variablen zu deklarieren und hilft, Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich leere Zeilen in einer bestimmten Spalte löschen? Du kannst das obige Makro anpassen, indem Du die Spaltennummer in Cells(lgCount, 1) änderst.

2. Was ist der Unterschied zwischen Delete und Clear in VBA? Delete entfernt die gesamte Zeile oder Spalte, während Clear nur den Inhalt löscht, aber die Zeile oder Spalte intakt lässt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige