Vba for loop (für next, for each)

Wichtige Punkte

Für die nächste Schleife

VBA FOR NEXT ist eine feste Schleife, die einen Zähler zum Ausführen von Iterationen verwendet. Vereinfacht ausgedrückt müssen Sie angeben, wie oft die Schleife ausgeführt werden soll. Sobald diese Anzahl an Schleifen erreicht ist, wird sie automatisch gestoppt. Aus diesem Grund handelt es sich um eine feste Schleife, die bei VBA-Entwicklern am beliebtesten ist.

Syntax

Hier ist die Syntax der VBA For Next-Schleife:

 For counter = Start To End [Step stepsize] [statements] Next [counter]
Für-gegen-Anfang bis Ende
  1. Zähler : Es handelt sich um eine Variable, die die Anzahl der Wiederholungen speichert und ihren Wert mit jeder Wiederholung erhöht. Befindet sich die Schleife beispielsweise in der fünften Iteration, beträgt der Zählerwert fünf, und sobald die Schleife den Befehl für die fünfte Iteration ausführt, ändert sich der Zählerwert auf sechs.
  2. Start : Es handelt sich um eine numerische Variable, die den Startwert des Zählers speichert.
  3. Ende : Es handelt sich um eine numerische Variable, die den Endwert des Zählers speichert.
  4. Schrittgröße : Diese Variable gibt eine große Erhöhung oder Verringerung des Zählerwerts an. Standardmäßig beträgt die Schrittgröße eins, Sie können jedoch auch einen beliebigen positiven oder negativen Wert verwenden.
  5. Anweisung : Dies ist ein Satz Code, den Sie bei jeder Iteration der For Next-Schleife ausführen möchten.
  6. Weiter : Dies ist die Endanweisung für eine Iteration der Schleife und verwendet den Zählerwert, um VBA anzuweisen, die Schleife zu wiederholen. Sobald der Zähler den Endwert erreicht, beendet er die Schleife.

Beispiel zum Verständnis für die nächste Schleife

Um zu verstehen, wie man es für die nächste Schleife verwendet, schreiben wir einen einfachen Code zum Hinzufügen von Seriennummern in einer Spalte.

Beispiel zum Verstehen für die nächste Schleife

Um For Next Loop zu verwenden, können Sie die folgenden Schritte ausführen:

  1. Zunächst müssen Sie eine Variable deklarieren, die Sie zum Speichern des Zählerwerts verwenden können.
    declare-a-variable
  2. Als nächstes müssen wir der Variablen den Zählerwert zuweisen.
    assign-the-counter-value
  3. Jetzt ist es an der Zeit, Code für die Schleife zu schreiben. In der ersten Zeile müssen Sie also die Zählervariable verwenden und die Start- und Endwerte festlegen. Hier in diesem Code haben Sie die Variable „i“ als Endwert.
    write-code-for-loop
  4. Von dort aus müssen Sie Code schreiben, der die Seriennummern in die aktive Zelle einfügen und dann mit der nächsten Zelle fortfahren kann. Da sich der Zählerwert mit jeder Iteration erhöht, können Sie damit die Seriennummer in die aktive Zelle eingeben und anschließend mit der Umschalttaste die Auswahl in die nächstniedrigere Zelle verschieben.
    code-that-can-add-serial-number
  5. Verwenden Sie am Ende das nächste Schlüsselwort und die Zählervariable, um den Schleifencode zu vervollständigen.
 Sub AddSerialNumbers() Dim i As Integer i = 10 For i = 1 To i ActiveCell.Value = i ActiveCell.Offset(1, 0).Activate Next i End Sub

Im Schnappschuss unten können Sie sehen, dass dieser Code, wenn ich ihn ausführe, bei der ausgewählten Zelle mit der Eingabe einer Seriennummer beginnt und dann in jeder Iteration zur nächsten Zelle wechselt.

vba-for-next-loop-example-1

Wie Sie wissen, handelt es sich bei For Next um eine feste Schleife. Wenn Sie in diesem Code einen numerischen Wert zuweisen, wird VBA angewiesen, die Schleife so oft auszuführen.

Und Sie können den Schnappschuss unten sehen, den ich in der zweiten Iteration der Schleife gemacht habe, wo der Wert der Zählervariablen „i“ zwei ist.

Weisen Sie einen numerischen Wert zu

Der Punkt, den ich ansprechen möchte, ist, dass die Zählvariable ihren Wert bei jeder Iteration ändert und diesen Wert in die aktive Zelle eingibt. Durch Verschieben wird dann die nächste Zelle nach unten aktiviert, wodurch eine Iteration abgeschlossen wird.

Am Ende dient das „Next“-Schlüsselwort in VBA dazu, zur ersten Zeile der Schleife zurückzukehren und diese zu wiederholen. Wie Sie in der For Next-Syntax gesehen haben, können Sie in der Schleife auch einen Schrittwert verwenden, um den Zähler darauf basierend zu betreiben.

Wenn Sie also zwei als Schrittwert verwenden, würde der Code wie folgt aussehen.

 Sub AddSerialNumbers() Dim i As Integer i = 10 For i = 1 To i Step 2 ActiveCell.Value = i ActiveCell.Offset(1, 0).Activate Next i End Sub

Und wenn Sie diesen Code ausführen, wird bei der Aktivität so etwas wie der Schnappschuss unten angezeigt.

wenn-Sie-einen-Code-Schnappschuss ausführen

Wenn Sie einen Schrittwert verwenden (wie Schritt 2, den Sie im obigen Code verwendet haben), ignoriert VBA jede zweite Iteration in der Schleife, und wie Sie sehen, haben Sie fünf Zahlen mit der Differenz von eins in jeder Zahl.

Hinweis : Im obigen Beispiel haben Sie „i“ als Zählervariable verwendet, Sie können jedoch je nach Bedarf auch einen anderen Namen verwenden.

Für jede weitere Schleife

VBA FOR EACH NEXT ist eine feste Schleife, die alle Objekte in einer Sammlung durchlaufen kann. In For Each Next müssen Sie die Anzahl der Iterationen nicht angeben. Stattdessen können Sie eine Sammlung von Objekten angeben und alle diese Objekte einzeln durchlaufen.

Syntax

Hier ist die VBA-Syntax für jede nachfolgende Schleife:

 For Each Object In Collection [statements] Next [object]
Syntax-für-VBA-für-jede-nächste-Schleife
  1. Objekt : Es stellt das einzige Objekt in der Objektsammlung dar, die Sie durchlaufen. Wechselt bei jeder Iteration von einem Objekt zum anderen.
  2. Sammlung : Dies ist eine Sammlung von Objekten, die Sie durchlaufen möchten.
  3. Anweisung : Codezeile(n), die Sie in jeder Schleife durch alle Objekte in der Sammlung ausführen möchten.
  4. Weiter : Dies ist die Endanweisung einer Iteration der Schleife und weist VBA an, zum nächsten Objekt in der Sammlung zu wechseln.

Beispiel zum Verständnis der For Each Next-Schleife

Um die For Each Next-Schleife zu verstehen, schreiben wir Code, um alle Blätter außer dem aktiven Arbeitsblatt auszublenden. Dieser Code überprüft den Namen jedes Arbeitsblatts, ordnet ihn dem Namen des aktiven Arbeitsblatts zu und blendet ihn aus, wenn er nicht übereinstimmt.

Um die For Each Next-Schleife zu verwenden, können Sie die folgenden Schritte ausführen:

  1. Zuerst müssen Sie eine Variable deklarieren, die als Arbeitsblatt verwendet werden soll.
    code-to-hide-the-all-sheets
  2. Anschließend verwenden Sie das Schlüsselwort „For Each“, dann die Variable „mySheet“ für das Blatt und „ActiveWorkbook.Worksheets“ für die Arbeitsblattsammlung der aktiven Arbeitsmappe.
    for-each-mysheet-active-workbook-worsheets
  3. Als Nächstes müssen Sie mit der VBA-IF-Anweisung testen, ob der Name des Blatts, das sich derzeit in dieser Schleifeniteration befindet, NICHT mit dem Namen des aktiven Arbeitsblatts übereinstimmt. Wenn diese Bedingung zutrifft, wird das Blatt ausgeblendet, das sich derzeit in der Schleife befindet Wiederholung.
    vba-if-statement-to-test
  4. Am Ende haben Sie das Schlüsselwort NEXT und die Variable „mySheet“, um den Schleifencode zu vervollständigen.
    next-keyword-and-mysheet

Endgültiger Code:

 Sub Hide_Other_Sheets() Dim mySheet As Worksheet For Each mySheet In ActiveWorkbook.Worksheets If mySheet.Name <> ActiveSheet.Name Then mySheet.Visible = False End If Next mySheet End Sub

Auf diese Weise werden alle Arbeitsblätter ausgeblendet.

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert