So löschen Sie eine ganze Zeile in Excel mit VBA (Beispiele)

Das Hinzufügen und Löschen von Zeilen gehört zu den alltäglichen Aufgaben bei der Arbeit mit Excel.

Während Sie dies einfach über das Arbeitsblatt selbst tun können, möchten Sie manchmal die VBA-Route verwenden, um Zeilen in Excel zu löschen. Dies können das Löschen einer bestimmten Zeile, mehrerer Zeilen in der Auswahl, das Löschen alternativer Zeilen oder solcher mit einem bestimmten Wert sein.

In diesem Tutorial zeige ich Ihnen, wie Sie Zeilen in Excel mit VBA löschen (mehrere Szenarien).

Also lasst uns anfangen!

Löschen Sie eine ganze Zeile mit VBA

Um eine ganze Zeile in Excel mit VBA zu löschen, müssen Sie die EntireRow.Delete-Methode verwenden.

Wenn Sie beispielsweise die gesamte erste Zeile in einem Arbeitsblatt löschen möchten, können Sie den folgenden Code verwenden:

Sub DeleteEntireRow() Rows(1).EntireRow.Delete End Sub

Der obige Code gibt zuerst die zu löschende Zeile an (was durch Angabe der Zahl in Klammern erfolgt) und verwendet dann die EntireRow.Delete-Methode, um sie zu löschen.

Sie können auch mehrere Zeilen löschen, indem Sie diese Zeilen im Code angeben.

Der folgende Code löscht beispielsweise die Zeilennummern 1, 5 und 9 im Arbeitsblatt:

Sub DeleteEntireRow() Rows(9).EntireRow.Delete Rows(5).EntireRow.Delete Rows(1).EntireRow.Delete End Sub

Der obige Code verwendet die gleiche Logik, in der er die Zeilennummern angibt und Excel diese Zeilen nacheinander löscht.

WICHTIG: Wenn Sie Zeilen mit einem ähnlichen Code wie dem obigen Code löschen, denken Sie daran, mit dem Löschen von unten zu beginnen und dann nach oben zu gehen. Wenn Sie beispielsweise oben beginnen und zuerst Zeile 1 löschen, werden alle Zeilen darunter um eine Zeile nach oben verschoben und die Nummerierung wäre deaktiviert (da Zeile 5 zu Zeile 4 wird usw.).

Alle Zeilen in der Auswahl löschen

Falls Sie alle Zeilen in einem ausgewählten Zellbereich löschen möchten, können Sie den folgenden VBA-Makrocode verwenden:

Sub DeleteEntireRow() Selection.EntireRow.Delete End Sub

Der obige Code gilt für die EntireRow.Delete-Methode für die gesamte Auswahl.

Alternative Zeilen löschen (oder jede dritte/vierte/n. Zeile löschen)

Manchmal erhalten Sie möglicherweise einen Datendump, bei dem jede zweite Zeile (oder dritte, vierte oder n-te Zeile) nutzlos ist und gelöscht werden muss.

Früher habe ich mit Finanzdaten gearbeitet, bei denen jede zweite Zeile leer war und gelöscht werden musste.

Dies ist die Art von Szenario, in der VBA wirklich glänzt.

Unten ist der VBA-Code, der alle Zeilen in der Auswahl durchläuft und jede zweite Zeile löscht:

Sub DeleteAlternateRows() RCount = Selection.Rows.Count For i = RCount To 1 Step -2 Selection.Rows(i).EntireRow.Delete Next i End Sub

Lassen Sie mich erklären, wie dieser VBA-Code funktioniert.

Zuerst habe ich eine Variable verwendet RCount um die Gesamtzahl der Zeilen in der Auswahl zu erhalten.

Dann habe ich eine For Next-Schleife verwendet, um dies so oft auszuführen, wie viele Zeilen vorhanden sind. Wenn es beispielsweise 12 Zeilen gibt, wird diese Schleife von 12 bis 1 (d. h. 12 Mal) ausgeführt. Es ist wichtig, dies von der letzten Zeile in der Auswahl bis zur ersten auszuführen, da wir nicht möchten, dass sich die Zeilennummern ändern, wenn eine Zeile gelöscht wird.

Außerdem wird Schritt -2 verwendet, da wir jede zweite Zeile (von unten nach oben) löschen müssen. Wenn Sie jede dritte Zeile löschen möchten, können Sie -3 verwenden.

Innerhalb der VBA-Schleife habe ich die Selection.Rows(i).EntireRow.Delete-Methode verwendet, um jede alternative Zeile zu löschen.

Löschen Sie leere Zeilen mit VBA

Sie können auch die EntireRow.Delete-Methode verwenden, um alle leeren Zeilen zu löschen.

Unten ist der VBA-Code, der leere Zellen im ausgewählten Dataset auswählt und die gesamte Zeile löscht.

Sub DeleteBlankRows() Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub

Der obige Code verwendet die SpecialCells-Eigenschaft, um alle leeren Zellen auszuwählen und zu löschen. Dies ist die gleiche Methode, mit der wir auch das Dialogfeld "Gehe zu Spezial" verwenden können, um alle leeren Zellen auszuwählen.

Sobald diese leeren Zellen mit SpecialCell identifiziert wurden, werden diese dann mit der EntireRow.Delete-Methode gelöscht.

Hinweis: Diese Methode wählt leere Zellen aus und überprüft nicht, ob die gesamte Zeile leer ist oder nicht. Wenn also eine Zelle in einer Zeile leer ist, würde dies immer noch die gesamte Zeile löschen.

Zeilen mit einem bestimmten Wort/Wert löschen

Sie können auch einen einfachen VBA-Code verwenden, um jede Zelle im ausgewählten Bereich zu durchsuchen und alle Zeilen zu löschen, in denen eine Zelle einen bestimmten Text oder Wert enthält.

Angenommen, Sie haben einen Datensatz und ich möchte alle Zellen löschen, die den Text Drucker in Spalte 2 der Auswahl enthalten.

Unten ist der Code, der dies tut:

Sub DeleteRowswithSpecificValue() For i = Selection.Rows.Count To 1 Step -1 If Cells(i, 2).Value = "Printer" Then Cells(i, 2).EntireRow.Delete End If Next i End Sub

Der obige Code zählt zuerst die Gesamtzahl der Zeilen in der Auswahl. Dadurch wird sichergestellt, dass die Schleife nur so oft ausgeführt wird. Es verwendet dann die "For Next-Schleife", um alle Zellen in Spalte 2 zu durchlaufen.

Die IF THEN ELSE-Anweisung wird dann verwendet, um den Wert in jeder Zelle in Spalte 2 zu überprüfen. Und falls der Wert/Text mit dem angegebenen Text übereinstimmt (in diesem Beispiel „Drucker“).

In diesem Beispiel habe ich überprüft, ob der Text mit einer bestimmten Zeichenfolge übereinstimmt oder nicht. Sie können dies auch mit Werten tun. Sie können beispielsweise alle Zeilen löschen, deren Verkaufswert weniger als 1000 oder mehr als 1000 beträgt.

Hinweis: Eine wichtige Sache, die hier zu beachten ist, ist, dass die Schleife von Auswahl.Zeilen.Zählen bis 1 um sicherzustellen, dass das Löschen einer Zeile keine Auswirkungen auf die darüber liegenden Zeilen hat.

So verwenden Sie diesen VBA-Code

Lassen Sie mich Ihnen nun zeigen, wie Sie alle in diesem Tutorial erwähnten Codes verwenden, um die gesamte Zeile zu löschen.

Sie müssen diese Codes kopieren und in ein Modul im Excel VB Editor einfügen. Nachdem Sie diese Codes kopiert haben, können Sie die Makrocodes ausführen.

Nachfolgend finden Sie die Schritte zum Kopieren und Einfügen dieser VBA-Codes in ein Modul:

  1. Halten Sie die ALT-Taste gedrückt und drücken Sie die Taste F11 (oder Funktion + Wahl + F11 auf dem Mac). Dies öffnet den VB-Editor
  2. Im VB-Editor befindet sich links der Projekt-Explorer. Wenn Sie es nicht sehen, gehen Sie zur Option Ansicht und klicken Sie dann auf Projekt-Explorer.
  3. Klicken Sie mit der rechten Maustaste auf ein beliebiges Objekt im Projekt-Explorer (für die Arbeitsmappe, in der Sie den Code ausführen möchten).
  4. Gehen Sie zu Einfügen und klicken Sie dann auf Modul. Dadurch wird ein neues Modul für die Arbeitsmappe eingefügt
  5. Kopieren Sie die obigen Codes und fügen Sie sie in das Modul ein.

Um diese Codes auszuführen, können Sie den Cursor an einer beliebigen Stelle im Code (den Sie ausführen möchten) platzieren und die Taste F5 drücken (oder auf das grüne Dreieck in der VBA-Symbolleiste klicken).

Ich habe auch ein detailliertes Tutorial über verschiedene Möglichkeiten zum Ausführen von VBA-Makrocodes in Excel geschrieben.

Falls Sie einen dieser Codes häufig verwenden müssen, können Sie diese auch der persönlichen Makroarbeitsmappe und dann der QAT hinzufügen. Auf diese Weise steht Ihnen der Code mit einem einzigen Klick in jeder Ihrer Arbeitsmappen zur Verfügung.

Dies waren also einige VBA-Codes, mit denen Sie ganze Zeilen in Excel löschen können (in verschiedenen Szenarien). Die gleiche Logik kann auch angewendet werden, wenn Sie Spalten anstelle von Zeilen löschen möchten (mit entsprechender Anpassung in den Codebeispielen).

Ich hoffe, Sie fanden dieses Tutorial nützlich!

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave