Es kann vorkommen, dass wir leere Zeilen oder Spalten aus einer Datei in Excel für die Schleife löschen müssen. Wir schreiben dann vba-Makro / Code. Der Code, den wir verwenden müssen, variiert von Situation zu Situation. Manchmal müssen wir möglicherweise eine Zeile oder Spalte löschen, während wir manchmal einen ganzen Bereich von Zeilen oder Spalten oder manchmal Zeilen / Spalten basierend auf einer oder mehreren Bedingungen löschen müssen.

Wenn Sie nur eine oder mehrere bestimmte Zeilen oder Spalten löschen müssen, verwenden wir VBA Excel for Loop und Sie können einfach den folgenden Code verwenden: _Option Explicit Sub macro1 ()

Application.DisplayAlerts = False With Worksheets („Sheet1“)

Rows („5: 6“). Delete .Columns („A: D“). Delete End With Application.DisplayAlerts = True End Sub_ Sie können den Code sehen, der in das Modulfenster von Module1 kopiert wurde. Um den Code zu kopieren, drücken Sie Alt + F11 in Ihrer Datei. Auf der linken Seite sehen Sie Microsoft Excel-Objekte. Klicken Sie mit der rechten Maustaste und wählen Sie Einfügen. Klicken Sie dann auf Modul. Das Codefenster wird rechts angezeigt. Kopieren Sie den Code über. Siehe das folgende Bild –

img1

Application.DisplayAlerts = False

Wir setzen Display-Warnungen auf false und speichern die Datei unter dem erforderlichen Dateinamen. Setzen Sie dann die Anzeigewarnungen kurz vor dem End Sub auf true.

With Worksheets („Sheet1“) ist eine With-Schleife, die mit End With endet.

Wenn Sie dies für die Schleife VBA Excel verwenden, müssen alle Anweisungen in dieser Schleife, die dieses Objekt verwenden, nicht mit „Arbeitsblätter (“ Sheet1 „)“ beginnen. Stattdessen können sie direkt mit einem Punkt (.) Beginnen.

.Rows („5: 6“). Delete löscht nur die Zeilen 5 und 6.

Columns („A: D“). Delete löscht die Spalten A bis D.

In diesem Fall werden nur die angegebenen Zeilen / Spalten gelöscht.

Manchmal müssen Sie jedoch unter bestimmten Bedingungen Zeilen / Spalten löschen. Zum Beispiel Nehmen wir an, wir möchten alle Spalten in der Datei löschen, die als Test „Test“ enthalten. In diesem Fall benötigen wir eine Schleife, die von einer Spalte zur anderen prüft. Wenn die Kriterien erfüllt sind, wird die Spalte gelöscht.

Wir können einen solchen Code verwenden. Beachten Sie, dass jede Person den Code so vorbereitet, wie sie es möchte. Dies ist nur eine der Möglichkeiten, wie dies codiert werden kann, und nicht die einzige Methode.

_Option Explicit Sub macro2 ()

Dim i As Long, lcol As Long Application.DisplayAlerts = False With Worksheets („Sheet1“)

lcol = .Range („A1“). End (xlToRight) .Column For i = lcol to 1 Schritt -1 If .Cells (1, i) .Value = „“ Dann Exit For If .Cells (1, i). value = “Test” Then .Columns (i) .Delete Next i End With Application.DisplayAlerts = True End Sub_ Siehe den Code, der in Modul 1 gemäß dem folgenden Bild gespeichert wurde

img2

Hier ist lcol die letzte Spalte im Blatt, die Daten enthält. Wenn Sie diesen Code zufällig in einer leeren Datei testen, hat lcol den Wert 16384 oder die Spaltennummer der letzten Spalte gemäß Ihrer Excel-Version. Dann durchlaufen wir eine Schleife von der letzten Spalte zur ersten Spalte und bewegen uns jedes Mal einen Schritt zurück. Wir bewegen uns rückwärts, da der Löschcode nur dann einwandfrei funktioniert, wenn Sie mit dem Löschen aus der letzten Zeile oder letzten Spalte beginnen. Wenn Sie von der 1. Zeile / Spalte ausgehen, neigt der Code dazu, Fehler zu machen.

Die 1 ^ st ^ if-Bedingung wird dort eingegeben, falls Sie das Makro für eine leere Datei ausführen. In Excel wird das Makro von der letzten Spalte, in diesem Fall 16384, bis zur Spalte 1 wiederholt, und dies kann ziemlich lange dauern. Wenn der Code eine leere Spalte findet, wird die Schleife sofort über die Anweisung exit For beendet. Die Bedingung 2 ^ nd ^ if prüft, ob der Wert „Test“ ist, und löscht die Spalte, wenn „Test“ gefunden wird.

Wenn Sie die Zeilen anstelle der Spalten löschen möchten, ändert sich der Code in – _Option Explicit Sub macro3 ()

Dim i As Long, Lrow As Long Application.DisplayAlerts = False With Worksheets („Sheet1“)

lrow = .range („A“ & .Rows.Count) .End (xlUp) .Row For i = lrow to 2 Schritt -1 If .Cells (i, 1) .Value = „“ Dann Exit For If .Cells ( i, 1) .Value = „Test“ Dann .Rows (i) .Delete Next i End With Application.DisplayAlerts = True End Sub_ Siehe den folgenden Code –

img3

Sie hätten beobachtet, dass sich der Wert .Cells (1, i) .value im obigen Code in .Cells (i, 1) .value ändert. Dies geschieht, weil wir im ersten Code Spalten gelöscht haben, sodass die Variable „i“ die Spalten durchlaufen musste, während sie im zweiten Code die Zeilen durchlaufen musste. Hier werden wir von der letzten Zeile zur 2. Zeile wechseln, da die 1. Zeile Überschriften enthält, die beibehalten werden müssen.

Gemäß der Codeanforderung können Sie sogar die Zeilen zum Löschen von Zeilen und Spalten zu 1 Code zusammenführen. Sie können sogar mehrere Bedingungen festlegen, basierend darauf, welche Zeile / Spalte gelöscht werden soll. Bedenken Sie, wir möchten alle Zeilen löschen, in denen die 1. Spalte Text wie Test oder Dummy enthält. Dann lautet der Code wie folgt: _Option Explicit Sub macro4 ()

Dim i As Long, Lrow As Long Application.DisplayAlerts = False With Worksheets („Sheet1“)

lrow = .range („A“ & .Rows.Count) .End (xlUp) .Row For i = lrow to 2 Schritt -1 If .Cells (i, 1) .Value = „“ Dann Exit For If .Cells ( i, 1) .Value = „Test“ oder .Cells (i, 1) .Value = „Dummy“ Dann .Rows (i) .Delete Next i End With Application.DisplayAlerts = True End Sub_

img4

Ebenso können Sie diesen Code oder den Code, den Sie je nach Anforderung haben, ergänzen. Sie können mehrere Bedingungen für Zeilen und sogar für Spalten hinzufügen.

image 48