Использование Do... Операторы LoopUsing Do...Loop statements

Вы можете использовать Операторы Loop для выполнения блока операторов неограниченное число раз.You can use Do...Loop statements to run a block of statements an indefinite number of times. Операторы повторяются до тех пор, пока сохраняется условие True, или пока условие не станет True.The statements are repeated either while a condition is True or until a condition becomes True.

Повторяющиеся операторы, пока условие имеет значение trueRepeating statements while a condition is True

Существует два способа использования ключевого слова while для проверки условия в методе Do... Оператор Loop .There are two ways to use the While keyword to check a condition in a Do...Loop statement. Перед входом в цикл можно проверить условие или проверить его после запуска цикла хотя бы один раз.You can check the condition before you enter the loop, or you can check it after the loop has run at least once.

В следующей ChkFirstWhile процедуре перед входом в цикл проверяется условие.In the following ChkFirstWhile procedure, you check the condition before you enter the loop. Если myNum задано значение 9, а не 20, операторы в цикле никогда не будут выполняться.If myNum is set to 9 instead of 20, the statements inside the loop will never run. В ChkLastWhile процедуре операторы в цикле выполняются только один раз до того, как условие станет ложным.In the ChkLastWhile procedure, the statements inside the loop run only once before the condition becomes False.

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

Повторяющиеся операторы до тех пор, пока условие не станет истиннымRepeating statements until a condition becomes True

Существует два способа использования ключевого слова Until для проверки условия в операторе Do...Loop.There are two ways to use the Until keyword to check a condition in a Do...Loop statement. Перед входом в цикл (как показано в ChkFirstUntil процедуре) можно проверить условие (как показано в процедуре) или проверить его после выполнения цикла по крайней мере один раз (как показано в ChkLastUntil процедуре).You can check the condition before you enter the loop (as shown in the ChkFirstUntil procedure), or you can check it after the loop has run at least once (as shown in the ChkLastUntil procedure). Повторение циклов продолжается, пока сохраняется условие False.Looping continues while the condition remains False.

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

Выход из команды Do... Оператор Loop в циклеExiting a Do...Loop statement from inside the loop

Вы можете выйти из команды Do... Выполните цикл с помощью оператора Exit Do .You can exit a Do...Loop by using the Exit Do statement. Например, чтобы выйти из бесконечного цикла, используйте оператор Exit Do в блоке истинного оператора If... Then... Оператор else или оператор Select Case .For example, to exit an endless loop, use the Exit Do statement in the True statement block of either an If...Then...Else statement or a Select Case statement. Если условие будет False, цикл запустится обычным образом.If the condition is False, the loop will run as usual.

В следующем примере myNum присваивается значение, которое создает бесконечный цикл.In the following example myNum is assigned a value that creates an endless loop. Оператор If...Then...Else проверяет это условие, а затем выходит из бесконечного цикла.The If...Then...Else statement checks for this condition, and then exits, preventing endless looping.

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

Примечание

Чтобы остановить бесконечный цикл, нажмите клавиши ESC или CTRL+BREAK.To stop an endless loop, press ESC or CTRL+BREAK.

См. такжеSee also

Поддержка и обратная связьSupport and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи?Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.