Verwenden von Do... Loop-Anweisungen
Verwenden Sie Do... Loop Anweisungen, um einen Anweisungsblock beliebig oft auszuführen. Die Anweisungen werden wiederholt, während eine Bedingung True ist oder bis eine Bedingung True wird.
Wiederholte Anweisungen, während eine Bedingung true ist
Es gibt zwei Möglichkeiten für die Verwendung des SchlüsselwortsWhile zum Überprüfen einer Bedingung in einer Do...Loop -Anweisung. Sie können die Bedingung überprüfen, bevor Sie in die Schleife eintreten, oder Sie können sie überprüfen, nachdem die Schleife mindestens einmal ausgeführt wurde.
Im folgenden ChkFirstWhile
Verfahren überprüfen Sie die Bedingung, bevor Sie in die Schleife eintreten. Wenn myNum
nicht auf 20, sondern auf 9 festgelegt ist, werden die Anweisungen in der Schleife niemals ausgeführt. Im ChkLastWhile
-Verfahren werden die Anweisungen in dieser Schleife nur einmal ausgeführt, bevor die Bedingung False wird.
Sub ChkFirstWhile()
counter = 0
myNum = 20
Do While myNum > 10
myNum = myNum - 1
counter = counter + 1
Loop
MsgBox "The loop made " & counter & " repetitions."
End Sub
Sub ChkLastWhile()
counter = 0
myNum = 9
Do
myNum = myNum - 1
counter = counter + 1
Loop While myNum > 10
MsgBox "The loop made " & counter & " repetitions."
End Sub
Wiederholen von Anweisungen, bis eine Bedingung true wird
Es gibt zwei Methoden für die Verwendung des Schlüsselworts Until, um eine Bedingung in einer Do...Loop -Anweisung zu überprüfen. Sie können die Bedingung vor dem Verwenden der Schleife überprüfen (wie in der ChkFirstUntil
-Prozedur dargestellt), oder Sie können die Bedingung überprüfen, nachdem die Schleife mindestens einmal ausgeführt wurde (wie in der ChkLastUntil
-Prozedur dargestellt). Die Schleife wird weiterhin ausgeführt, während die Bedingung False bleibt.
Sub ChkFirstUntil()
counter = 0
myNum = 20
Do Until myNum = 10
myNum = myNum - 1
counter = counter + 1
Loop
MsgBox "The loop made " & counter & " repetitions."
End Sub
Sub ChkLastUntil()
counter = 0
myNum = 1
Do
myNum = myNum + 1
counter = counter + 1
Loop Until myNum = 10
MsgBox "The loop made " & counter & " repetitions."
End Sub
Beenden eines Do... Loop-Anweisung innerhalb der Schleife
Sie können eine Do... Loop mithilfe der Exit Do-Anweisung. Um beispielsweise eine Endlosschleife zu beenden, verwenden Sie die Exit Do-Anweisung im True-Anweisungsblock eines if... Dann... Else-Anweisung oder eine Select Case-Anweisung. Falls die Bedingung False ist, wird die Schleife wie gewohnt ausgeführt.
Im folgenden Beispiel myNum
wird ein Wert zugewiesen, der eine Endlosschleife erstellt. Die If...Then...Else -Anweisung sucht nach dieser Bedingung und beendet dann den Vorgang, um so eine Endlosschleife zu verhindern.
Sub ExitExample()
counter = 0
myNum = 9
Do Until myNum = 10
myNum = myNum - 1
counter = counter + 1
If myNum < 10 Then Exit Do
Loop
MsgBox "The loop made " & counter & " repetitions."
End Sub
Hinweis
[!HINWEIS] Wenn Sie eine Endlosschleife anhalten möchten, drücken Sie ESC oder STRG+UNTBR.
Siehe auch
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.