Wie verwende ich die do while-schleife in vba?
VBA Do while ist eine Schleife, in der Sie eine Bedingung angeben müssen und diese Bedingung wahr bleiben muss, damit die Schleife ausgeführt wird. Vereinfacht gesagt wird zunächst geprüft, ob die von Ihnen angegebene Bedingung wahr ist oder nicht. Wenn diese Bedingung wahr ist, wird die Schleife ausgeführt, andernfalls nichts.
In jeder Iteration testet es die Bedingung und führt erst dann die Anweisung aus. Stellen Sie sich vor, Sie möchten Arbeitsblätter in Excel hinzufügen , aber die Gesamtzahl der Arbeitsblätter beträgt 12 oder weniger. In diesem Fall können Sie diesen Code mit der do-while-Schleife schreiben.
Syntax
Hier ist die VBA-Syntax für jede nachfolgende Schleife.
Do While Condition [statements] Loop
- Bedingung: Dies ist die von Ihnen angegebene Bedingung. Diese Bedingung muss wahr sein, um die Schleife auszuführen.
- Anweisung : Die Codezeile(n), in der/denen die Do While-Schleife die Bedingung ausführen soll, ist wahr.
- Schleife : Dies ist die Endanweisung einer Iteration der Schleife und weist VBA an, zurückzugehen und die Bedingung erneut zu testen.
Beispiel zum Verständnis der DO While-Schleife
Um die Do-While-Schleife zu verstehen, schreiben wir einen Code zum Hinzufügen von Arbeitsblättern zu einer Arbeitsmappe, wenn die Gesamtzahl der Arbeitsblätter weniger als zwölf beträgt. Sie müssen VBA nicht mitteilen, wie viele Blätter hinzugefügt werden sollen, und bei jeder Ausführung dieses Codes stehen Ihnen immer insgesamt 12 Blätter zur Verfügung.
Führen Sie die folgenden Schritte aus:
- Zunächst müssen Sie „Do While“ auf der Tastatur eingeben.
- Als Nächstes müssen Sie eine Bedingung schreiben, die prüfen kann, ob die Gesamtzahl der Arbeitsblätter in der Arbeitsmappe weniger als zwölf beträgt.
- Dazu müssen Sie den folgenden Code verwenden, der die Gesamtzahl der Arbeitsblätter zählt und diese dann mit der Zahl zwölf vergleicht.
- Als Nächstes müssen Sie den Code schreiben, um ein Arbeitsblatt hinzuzufügen. Dieser Code wird ausgeführt, wenn die von Ihnen angegebene Bedingung wahr ist.
- Geben Sie am Ende das Schlüsselwort „Loop“ ein, um den Code zu vervollständigen.
Hier ist der vollständige Code, den Sie gerade geschrieben haben:
Sub vba_do_while_loop() Do While ActiveWorkbook.Worksheets.Count < 12 Sheets.Add Loop End Sub
Lassen Sie mich nun erklären, wie dieser Code funktioniert: Die von Ihnen angegebene Bedingung überprüft die Gesamtzahl der Arbeitsblätter in der Arbeitsmappe, und dann haben Sie einen Kleiner-als-Operator, der die Anzahl der Arbeitsblätter mit zwölf vergleicht.
Wenn die Anzahl der Arbeitsblätter weniger als zwölf beträgt, läuft die Schleife weiter und fügt weiterhin neue Arbeitsblätter hinzu. Sobald die Anzahl der Arbeitsblätter jedoch zwölf erreicht, wird die Schleife gestoppt.
Vereinfacht ausgedrückt bedeutet dies, dass die Schleife so lange weiterläuft, wie die Anzahl der Arbeitsblätter weniger als zwölf beträgt.
Hier ist die Sache: Mit dem Code, den Sie gerade geschrieben haben, müssen Sie nicht die Anzahl der Arbeitsblätter angeben, die Sie hinzufügen möchten. Wenn Sie jedoch mit der nächsten Schleife fortfahren, müssen Sie die Anzahl der Arbeitsblätter angeben, die Sie hinzufügen möchten.
Machen Sie eine Schleife für
Do Loop While ist eine erweiterte Version von Do While Loop, da es genauso funktioniert, es jedoch einen kleinen Unterschied beim Testen der Bedingung gibt.
In „Do Loop While“ wird eine Iteration der Schleife ausgeführt, bevor die von Ihnen angegebene Bedingung getestet wird. Wenn die Bedingung wahr ist, wird die Schleife fortgesetzt.
Nehmen wir an, Sie möchten Code schreiben, um ein Passwort zu überprüfen, Code auszuführen und die Schleife fortzusetzen, während das Passwort falsch ist (wir sehen dies im Beispiel).
Syntax
Hier ist die Syntax von VBA Do Loop While.
- Do: Dies ist das Startschlüsselwort der Do While-Schleife.
- Anweisung: Dies sind die Codezeilen, die Sie in der Schleife ausführen möchten.
- Loop While: Dies ist das Schlüsselwort, um die Schleife fortzusetzen und die von Ihnen angegebene Bedingung zu testen.
- Bedingung: Dies ist die Bedingung, die Sie testen möchten, bevor die Schleife ihre zweite Iteration beginnt und die Schleife fortsetzt.
Wie Sie in der Syntax von Do Loop While sehen können, wird die Anweisung zunächst einmal ausgeführt, dann wird die Bedingung aufgerufen und getestet. Wenn diese Bedingung wahr ist, wird die Schleife gestartet und fortgesetzt, solange die Bedingung erfüllt ist WAHR.
Beispiel zum Verständnis der DO-Schleife while
Um die do while-Schleife zu verstehen, schreiben wir Code, um ein Eingabefeld anzuzeigen und den Benutzer zur Eingabe des Kennworts aufzufordern.
In diesem Eingabefeld wird noch bis zu fünf Versuche lang deutlich angezeigt, dass das vom Benutzer eingegebene Passwort falsch ist. Danach verschwindet das Eingabefeld, ohne dass der Vorgang ausgeführt wird.
- Deklarieren Sie zunächst zwei Variablen, die Sie zum Speichern des Passworts und des Versuchszählers benötigen.
- Geben Sie anschließend das Schlüsselwort „Do“ ein. Hier müssen Sie nicht zuerst die Bedingung definieren, wie Sie in der Syntax gesehen haben.
- Als Nächstes müssen Sie eine Codezeile schreiben, um das Eingabefeld anzuzeigen, in dem der Benutzer zur Eingabe des Passworts aufgefordert wird.
- Von hier aus müssen Sie einen Zähler festlegen, der bis zu fünf zählen kann (summiert sich bei jeder Schleifeniteration).
- Geben Sie nun das Schlüsselwort „Loop While“ ein und legen Sie zwei Bedingungen fest, die den vom Benutzer und im Eingabefeld eingegebenen Wert überprüfen und den Zählerwert testen können, wenn er kleiner als 5 ist.
- Schreiben Sie am Ende den Code, den Sie ausführen möchten. Hier verwende ich die IF-Anweisung, die ein Meldungsfeld anzeigt, wenn das vom Benutzer eingegebene Passwort korrekt ist.
Sub vba_do_loop_while() Dim varPassword As Variant, i As Double Do varPassword = InputBox _ ("Enter the password to start the procedure:", _ "Check Password 1.0") i = i + 1 Loop While varPassword <> "CorrectPassword" And i < 5 If varPassword = "CorrectPassword" Then MsgBox "Your Password is Correct" End If End Sub
Lassen Sie mich Ihnen diesen Code erklären.
- Im ersten Teil dieses Codes befindet sich die do while-Schleife, die dem Benutzer ein Eingabefeld anzeigt und ihn nach einem Passwort fragt .
- Und wenn das Passwort falsch ist, wird die Schleife so lange ausgeführt, bis der Benutzer das richtige Passwort eingibt.
- Da Sie jedoch einen Zähler verwenden, um die Iterationen der Schleife zu zählen, und sobald dieser Zähler 5 erreicht, stoppt die Schleife .