Freigeben über


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.