In diesem Tutorial werden verschiedene Möglichkeiten zum Löschen von Zeilen und Spalten in Excel mit VBA demonstriert.
Delete Entire Row or Column
Um eine ganze Zeile in VBA zu löschen, verwenden Sie diese Codezeile:
Rows(1).Delete
Beachten Sie, dass wir die Delete-Methode zum Löschen einer Zeile verwenden.
Anstatt auf das Rows-Objekt zu verweisen, können Sie mit EntireRow auf Zeilen verweisen, die auf ihrem Range-Objekt basieren:
Range("a1").EntireRow.Delete
Um eine ganze Spalte zu löschen, verwenden Sie diese 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 hier auf die spezifischen Zeilen- und Spaltennummern / Buchstaben verweisen, 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
Dieses Beispiel löscht eine Zeile, wenn die gesamte Zeile leer ist:
Sub DeleteRows_EntireRowBlank()Dim cell As RangeFor Each cell In Range("b2:b20") If Application.WorksheetFunction.CountA(cell.EntireRow) = 0 Then cell.EntireRow.Delete End IfNext cellEnd Sub
Es verwendet die Excel-Arbeitsblattfunktion: COUNTA.
Zeile löschen, wenn Zelle leer ist
Dieses Beispiel löscht eine Zeile, wenn eine bestimmte Spalte in dieser Zeile leer ist (in diesem Fall Spalte B):
Range("b3:b20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Zeile aufgrund eines Zellwerts löschen
Dieses Beispiel durchläuft eine Schleife in einem Bereich und löscht Zeilen, wenn ein bestimmter Zellwert in dieser Zeile „Löschen“ lautet.
Sub DeleteRowswithSpecificValue()Dim cell As RangeFor Each cell In Range("b2:b20") If cell.Value = "delete" Then cell.EntireRow.Delete End IfNext cellEnd Sub
Weitere Beispiele für das Löschen von Zeilen und Spalten
Doppelte Zeilen löschen
Dieser Code löscht alle doppelten Zeilen in einem Bereich:
Range("b2:c100").RemoveDuplicates Columns:=2
Beachten Sie, dass wir Spalten:=2 gesetzt 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.
Wenn wir dies auf 1 gesetzt hätten, wäre nur die erste Zeile auf doppelte Werte geprüft worden.
Tabellenzeilen löschen
Dieser Code löscht die zweite Zeile in einer Tabelle, indem er auf ListObjects verweist.
ThisWorkbook.Sheets("Sheet1").ListObjects("list1").ListRows(2).Delete
Gefilterte Zeilen löschen
Um nur Zeilen zu löschen, die nach der Filterung sichtbar sind:
Range("b3:b20").SpecialCells(xlCellTypeVisible).EntireRow.Delete
Zeilen im Bereich löschen
Dieser Code löscht alle Zeilen im Bereich:
Range("a1:a10").EntireRow.Delete
Ausgewählte Zeilen löschen
Dieser Code löscht alle ausgewählten Zeilen:
Selection.EntireRow.Delete
Letzte Zeile löschen
Dies löscht die zuletzt verwendete Zeile in Spalte B:
Cells(Rows.Count, 2).End(xlUp).EntireRow.Delete
Durch Ändern von 2 in 1 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