VBA – Gesamte Zeile oder Spalte löschen
In this Article
In diesem Lernprogramm werden verschiedene Möglichkeiten zum Löschen von Zeilen und Spalten in Excel mithilfe von VBA vorgestellt.
Gesamte Zeile oder Spalte löschen
Um eine ganze Zeile in VBA zu löschen, verwenden Sie diese Codezeile:
Rows(1).Delete
Beachten Sie, dass wir die Delete-Methode verwenden, um eine Zeile zu löschen.
Anstatt das Row-Objekt zu verwenden, können Sie auf Zeilen auf der Basis ihres Range-Objekts mit EntireRow verweisen:
Range("a1").EntireRow.Delete
Um eine ganze Spalte zu löschen, verwenden Sie die folgenden Codezeilen:
Columns(1).Delete
Range("a1").EntireColumn.Delete
Mehrere Zeilen oder Spalten löschen
Mit der gleichen Logik können Sie auch mehrere Zeilen auf einmal löschen:
Rows("1:3").Delete
oder Spalten:
Columns("A:C").Delete
Beachten Sie, dass wir uns hier auf die spezifischen Zeilen- und Spaltennummern bzw. -buchstaben beziehen, die von Anführungszeichen umgeben sind.
Natürlich können Sie auch auf die gesamte Zeile eines Bereichs verweisen:
Range("a1:a10").EntireRow.Delete
Hinweis: Die folgenden Beispiele zeigen nur das Löschen von Zeilen, aber wie Sie oben sehen können, ist die Syntax praktisch identisch zum Löschen von Spalten.
Leere/leere Zeilen löschen
In diesem Beispiel wird eine Zeile gelöscht, wenn sie ganz leer ist:
Sub ZeilenLoeschen_GanzeLeereZeilen()
Dim Zelle As Range
For Each Zelle In Range("b2:b20")
If Application.WorksheetFunction.CountA(Zelle.EntireRow) = 0 Then
Zelle.EntireRow.Delete
End If
Next Zelle
End Sub
Es wird die Excel-Arbeitsblattfunktion COUNTA verwendet.
Zeile löschen, wenn Zelle leer ist
Damit wird eine Zeile gelöscht, wenn eine bestimmte Spalte in dieser Zeile leer ist (in diesem Fall Spalte B):
Range("b3:b20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Zeile anhand des Zellenwerts löschen
Diese Funktion durchläuft einen Bereich und löscht Zeilen, wenn ein bestimmter Zellenwert in dieser Zeile „Löschen“ lautet.
Sub ZeilenMitSpezifischenWertenLoeschen()
Dim Zelle As Range
For Each Zelle In Range("b2:b20")
If Zelle.Value = "Löschen" Then
Zelle.EntireRow.Delete
End If
Next Zelle
End Sub
Weitere Beispiele zum Löschen von Zeilen und Spalten
Doppelte Zeilen löschen
Mit diesem Code werden alle doppelten Zeilen in einem Bereich gelöscht:
Range("b2:c100").RemoveDuplicates Columns:=2
Beachten Sie, dass wir Columns:=2 festgelegt haben. Dadurch wird VBA angewiesen, die ersten beiden Datenspalten zu prüfen, wenn es sich um doppelte Zeilen handelt. Ein Duplikat wird nur gefunden, wenn beide Spalten doppelte Werte aufweisen. Hätten wir diesen Wert auf 1 gesetzt, wäre nur die erste Zeile auf doppelte Werte geprüft worden.
Tabellenzeilen löschen
Mit diesem Code wird die zweite Zeile in einer Tabelle gelöscht, indem auf ListObjects verwiesen wird.
ThisWorkbook.Sheets("Sheet1").ListObjects("list1").ListRows(2).Delete
Gefilterte Zeilen löschen
So löschen Sie nur Zeilen, die nach dem Filtern sichtbar sind:
Range("b3:b20").SpecialCells(xlCellTypeVisible).EntireRow.Delete
Zeilen im Bereich löschen
Mit diesem Code werden alle Zeilen im Bereich gelöscht:
Range("a1:a10").EntireRow.Delete
Ausgewählte Zeilen löschen
Mit diesem Code werden alle ausgewählten Zeilen gelöscht:
Selection.EntireRow.Delete
Letzte Zeile löschen
Damit wird die letzte belegte Zeile in Spalte B gelöscht:
Cells(Rows.Count, 2).End(xlUp).EntireRow.Delete
Wenn Sie 2 in 1 ändern, können Sie die zuletzt verwendete Zeile in Spalte A löschen usw.:
Cells(Rows.Count, 1).End(xlUp).EntireRow.Delete
Spalten nach Nummer löschen
Um eine Spalte nach ihrer Nummer zu löschen, verwenden Sie einen Code wie diesen:
Columns (2).Delete