Verwenden von Do... Loop-Anweisungen

Sie können Do... verwenden. Loop-Anweisungen, um einen Block von Anweisungen beliebig oft ausführen. Die Anweisungen werden wiederholt, während eine Bedingung True ist oder bis eine Bedingung True wird.

Wiederholen von Anweisungen, während eine Bedingung true ist

Es gibt zwei Möglichkeiten, das Schlüsselwort While zu verwenden, um eine Bedingung in einem Do... zu überprüfen. Loop-Anweisung. Sie können die Bedingung überprüfen, bevor Sie die Schleife eingeben, 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 die Schleife eingeben. 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 zu 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 aus der Schleife

Sie können ein Do... beenden. Schleife 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 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.