Löschen einer Zeile mit VBA

In Excel können Sie eine Zeile löschen, indem Sie mit der rechten Maustaste auf die Nummer der Zeile klicken und dann Löschen auswählen. Wenn Sie jedoch Zeilen mit komplexeren Methoden löschen möchten, müssen Sie VBA verwenden. Sie können Zeilen auf viele verschiedene Arten löschen.

Eine bestimmte Zeile löschen

Die einfachste Methode zum Löschen einer Zeile in VBA ist die Verwendung der Zeilennummer.

Sub deleteSpecificRow()Rows(4).DeleteEnd Sub

Dadurch wird die vierte Zeile jedes Mal gelöscht, wenn Sie das Makro ausführen.

Mehrere Zeilen löschen

Sie können auch mehrere Zeilen gleichzeitig löschen. Wählen Sie anstelle der Zeilennummer einen Zeilenbereich aus.

Sub deleteMultipleRows()Rows("2:4").DeleteEnd Sub

Es werden die Zeilen 2, 3 und 4 gelöscht.

Ausgewählte Zeilen löschen

Bisher haben wir Makros erstellt, die Zeilen mit festen Nummern im Code gelöscht haben. Dieses Mal löschen wir Zeilen aus einer Auswahl. Verwenden wir den folgenden Code.

Sub deleteSelectedRows()Selection.EntireRow.DeleteEnd Sub

Leere Zeilen löschen

In diesem Beispiel identifiziert Excel, welche Zellen leer sind, wählt sie aus und entfernt die Zeilen, in denen sie vorhanden sind.

Sub deleteBlankRows()Selection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub

Dieses Makro löscht Zeilen nur dann aus der Auswahl, wenn es den Ausdruck „Bad Row“ enthält.

ACHTUNG

Denken Sie daran, dass bei Text die Groß- und Kleinschreibung beachtet wird.

Sub deleteRowswithSelectedText()For Each Cell In Selection If Cell.Value = "Bad Row" Then Rows(Cell.Row).ClearContents End IfNextSelection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub

Code-Analyse

2. Die Schleife durchläuft jedes Element in der Auswahl.

3. Excel überprüft den tatsächlichen Zellenwert und ob der Wert genau „Schlechte Zeile“ ist.

4. Wenn die Bedingung erfüllt ist, löscht Excel den Inhalt der Zelle. Wir können keine Zelle löschen, da sich die Zellenposition ändert und einige „fehlerhafte Zeilen“ möglicherweise erhalten bleiben.

7. Wenn alle „fehlerhaften Zeilen“ gelöscht sind, wählt Excel diese Zellen aus.

8. Löscht dann Zeilen dieser Zellen.

Wenn Sie auch die Zeilen löschen möchten, die aus dieser Phrase bestehen, und nicht nur die genaue Übereinstimmung, verwenden Sie die Funktion InStr . Diese Funktion gibt die Position des ersten Auftretens der Phrase zurück.

Ändern Sie

Cell.Value = "Bad Row"

in

InStr(Cell, "Bad Row") > 0

Wir haben vier verschiedene Beispiele in unserem Arbeitsblatt. Jeder von ihnen gibt eine Position zurück.

  • „Schlechte Zeile“ gibt 1 zurück
  • „Gute Zeile“ gibt 0 zurück
  • „1 Schlechte Zeile“ gibt 3 zurück
  • „Schlechte Zeile !“ gibt 1 zurück

Das bedeutet, dass alle Zeilen außer „Gute Zeile“ entfernt werden.

Zeile löschen, bei der der Zelltyp ein String ist

In diesem Beispiel löschen wir eine Zeile, wenn der Zelltyp ein String ist.

Auf den ersten Blick scheinen die Zellen A3, A4 und A5 vom selben Typ zu sein. Aber wenn Sie sich ansehen, was hinter den Kulissen vor sich geht (Strg + `), werden Sie sehen, dass jeder von ihnen anders ist.

Sub deleteifString()Selection.SpecialCells(xlCellTypeConstants, 2).SelectSelection.EntireRow.DeleteEnd Sub

In der zweiten Zeile haben Sie den folgenden Code: xlCellTypeConstants. Es bedeutet, dass wir nach Konstanten suchen. Nummer 2 bedeutet den zweiten Typ, nämlich Text.

Excel wählt nur Werte vom Typ text aus.

Das Ergebnis.

Löschen Sie gerade / ungerade Zeilen

Jetzt löschen wir nur die Zeilen, die gerade sind.

Sub deleteEven()For Each Cell In Selection If Cell.Row Mod 2 = 0 Then Rows(Cell.Row).ClearContents End IfNextSelection.SpecialCells(xlCellTypeBlanks).SelectSelection.EntireRow.DeleteEnd Sub

Der Code ist dem aus dem vorherigen Beispiel sehr ähnlich. Es gibt nur einen Unterschied.

Zelle.Row Mod 2 = 0

Dies bedeutet, wenn der Rest nach der Division 0 ist (für Zahlen: 2, 4, 6, 8, …) dann ist die Zahl gerade, wenn es 1 ist, dann ist es eine ungerade Zahl (1, 3, 5, 6, …).

Tabellenkalkulations- und Python-Enthusiasten.

Beitragsaufrufe: 72.354

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.