Do Loop 사용

Do...Loop 명령문을 사용하여 명령문 블록을 무기한 실행할 수 있습니다. 조건이 True인 경우 또는 조건이 True가 될 때까지 명령문이 반복됩니다.

조건이 True인 동안 명령문 반복

While 키워드를 사용하여 Do...Loop 명령문에서 조건을 확인합니다. 다음 ChkFirstWhile 예에 표시된 대로 루프를 입력하기 전에 조건을 확인하거나, 루프가 적어도 한1회 실행된 후에 조건을 확인할 수 있습니다(ChkLastWhile 예 참조). ChkFirstWhile 프로시저에서 myNum가 20 대신 9로 설정된 경우 루프 내의 명령문은 실행되지 않습니다. ChkLastWhile 프로시저에서 루프 내의 명령문은 조건이 이미 False이므로 1회만 실행됩니다.

다음 예에서는 while 함수의 사용을 보여 줍니다.

예 1:

Sub ChkFirstWhile()
        Dim counter, myNum
        counter = 0
         myNum = 20
        Do While myNum > 10
           myNum = myNum - 1
           counter = counter + 1
        Loop
        'This loop made 10 repetitions."
End Sub

예 2:

Sub ChkFirstWhile()
    Dim counter, myNum
    counter = 0
    myNum = 9
    Do While myNum > 10
        myNum = myNum - 1
        counter = counter + 1
    Loop
    'This loop made 0 repetitions.
End Sub

예 3:

Sub ChkLastWhile()
        Dim counter, myNum
        counter = 0
        myNum = 9
        Do
                myNum = myNum - 1
                counter = counter + 1
        Loop While myNum > 10
        'This loop made 1 repetition.
End Sub

예 4:

Sub ExampleWithDoWhile()
        Dim counter, myNum
        counter = 0
        myNum = 15
        Do While myNum > 10
                        myNum = myNum - 2
                        counter = counter + 1
        Loop
' This loop reduced myNum to 9 and made 3 repetitions
End Sub

예 5:

Sub ExampleWithDoLoopWhile()
         Dim counter, myNum
        counter = 0
        myNum = 5
        Do
                        myNum = myNum + 1
                        counter = counter + 1
        Loop While myNum < 10
' This loop increased myNum to 10 and made 5 repetitions.
End Sub

예 6:

Sub ChkLastWhile()
   Dim counter, myNum
   counter = 0
   myNum = 9
   Do
      myNum = myNum - 1
      counter = counter + 1
   Loop While myNum > 10
   'This loop made 1 repetition.
End Sub

조건이 True가 될 때까지 명령문 반복

Until 키워드를 사용하여 Do...Loop 명령문에서 조건을 확인하는 두 가지 방법이 있습니다. 다음 ChkFirstUntil 예에 표시된 대로 루프를 입력하기 전에 조건을 확인하거나, 루프가 적어도 1회 실행된 후에 조건을 확인할 수 있습니다(ChkLastUntil 예 참조). 조건이 False이면 루프가 발생합니다.

다음 예에서는 until의 사용을 보여 줍니다.

예 1:

Sub ChkFirstUntil()
   Dim counter, myNum
   counter = 0
   myNum = 20
   Do Until myNum = 10
      myNum = myNum - 1
      counter = counter + 1
   Loop
   'This loop made 10 repetitions.
End Sub

예 2:

Sub ChkLastUntil()
   Dim counter, myNum
   counter = 0
   myNum = 1
   Do
      myNum = myNum + 1
      counter = counter + 1
   Loop Until myNum = 10
'This loop made 9 repetitions.
End Sub

예 3:

Sub ExampleWithDoUntil()
        Dim counter, myNum
        counter = 0
        myNum = 20
        Do Until myNum < 15
                        myNum = myNum - 2
                        counter = counter + 1
        Loop
'This loop reduced myNum to 14 and made 3 repetitions.
End Sub

예 4:

Sub ExampleWithDoLoopUntil()
    Dim counter, myNum
    counter = 0
    myNum = 5
    Do
        myNum = myNum + 2
        counter = counter + 1
    Loop Until myNum >= 15
    'This loop increased myNum to 15 and made 5 repetitions.
End Sub

루프 내부에서 Do...Loop 명령문 종료

Exit Do 명령문을 사용하여 Do...Loop를 종료할 수 있습니다. 무한 루프를 방지하는 것과 같은 특정 상황에서만 종료하려는 경우가 많으므로 If...Then...Else 명령문의 True 명령문 블록에서 Exit Do 명령문을 사용해야 합니다. 조건이 False이면 루프가 평소처럼 실행됩니다.

다음 예에서 myNum에는 무한 루프를 생성하는 값이 지정됩니다. If...Then...Else 문은 이 조건을 검사하여 무한 반복을 방지합니다.

다음 예제는 do loop 명령문의 사용을 보여줍니다.

예 1:

Sub ExitExample()
   Dim counter, myNum
      counter = 0
      myNum = 9
      Do Until myNum = 10
         myNum = myNum - 1
         counter = counter + 1
         If myNum < 10 Then Exit Do
      Loop
      'This loop made 1 repetition.
End Sub

예 2:

Sub PreventEndlessLoop()
        Dim counter, myNum
        counter = 1
        myNum = 0
        Do
                        myNum = myNum + 1
                        counter = counter + 1
                        If counter > 10 Then 
                                Exit Do   ' Avoids endless loop by exiting after 10 iterations.
                        End If
        Loop
        'This loop made 11 repetitions.
End Sub

예 3:

Sub ExampleWithDoWhile()
    Dim counter, myNum
    counter = 0
    myNum = 20
    Do While myNum > 10
        myNum = myNum - 2
        counter = counter + 1
        If myNum < 15 Then Exit Do   ' Exit the loop early if myNum is less than 15.
    Loop
    'This loop reduced myNum to 14 and made 3 repetitions.
End Sub

예 4:

Sub NestedLoopsExample()
    Dim i, j
    For i = 1 To 3
        j = 0
        Do
            j = j + 1
            If j > 2 Then Exit Do   ' Exit inner loop after 2 iterations.
        Loop
    Next
End Sub