본문 바로가기

엑셀/VBA

VBA 반복문 Do Loop에 대해 알아보자

반응형

For Next 반복문의 경우에는 반복 횟수를 이미 알고 있는 상태에서 반복문 처리를 하지만 반복 횟수를 모르는 경우에는 Do Loop 반복문을 이용하여 반복문 처리를 할 수 있습니다. Do Loop 반복문은 While이나 Until을 함께 사용합니다.

 

VBA 반복문 For Next에 대해 알아보자

 

VBA 반복문 For Next에 대해 알아보자

VBA의 반복문에 대해 알아보고자 합니다. 먼저 For Next 구문에 대해 알아보며 사용방법과 예제를 통해 자세히 알아보겠습니다. 반복문은 정해진 실행문이 지정한 조건을 만족하면 반복해서 실행

mr-johndoe.tistory.com

 

1. Do Loop 반복문이 While과 함께 쓰일 때

Do While Loop 반복문은 주어진 조건이 참일 경우 반복해서 실행문을 실행합니다. 사용방법은 다음과 같습니다.

 

   Do While 조건

        실행문

   Loop

 

 

 

 

While이 Do Loop 다음에 쓰일 수도 있습니다. 사용방법은 다음과 같습니다.

 

   Do

        실행문

   Loop  While 조건

 

이 경우 Do Loop While 반복문이라 하며 처음에는 반드시 실행문이 실행되고 조건이 참인 경우 반복해서 실행문이 실행되지만 조건이 거짓이면 Do Loop 문을 빠져나가게 됩니다.

하지만 Do While Loop 반복문의 경우에는 조건이 거짓이 되면 Do Loop 문을 바로 빠져나가게 되기 때문에 실행문이 한 번도 실행되지 않게 됩니다.

 

2. Do Loop 반복문이 Until과 함께 쓰일 때

Do Until Loop 반복문은 주어진 조건이 거짓인 경우 반복해서 실행문을 실행하다가 조건이 참이 되면 Do Loop 문을 빠져나가게 됩니다. 사용방법은 다음과 같습니다.

 

   Do Until 조건

        실행문

   Loop

 

While을 사용할 때와 마찬가지로 Until을 Do Loop 다음에 사용할 수도 있습니다. 이때도 마찬가지로 실행문이 한 번은 실행되는 특징이 있습니다. 사용방법은 다음과 같습니다.

 

   Do

        실행문

   Loop Until 조건

 

3. 예제로 Do Loop 반복문 알아보기

 위에서 알아본 네 가지 형태의 Do Loop 반복문을 예제를 통해 알아보겠습니다.

 

 

 

Do Loop 반복문으로 1부터 10까지의 합을 구하는 코드를 작성하려고 합니다.

 

① Do While Loop 반복문 사용

 

   Sub DoWhileLoop()
      Dim i As Integer
      Dim sum As Integer
           i = 0
          sum = 0
        
      Do While i <= 10
          sum = sum + i
           i = i + 1
       Loop


       Sheets(1).Cells(2, 1).Value = "Do While Loop"
       Sheets(1).Cells(2, 2).Value = "합계 : "
      Sheets(1).Cells(2, 3).Value = sum
   End Sub

 

② Do Loop While 반복문 사용

 

   Sub DoLoopWhile()
      Dim i As Integer
      Dim sum As Integer
          i = 0
           sum = 0
        
       Do
           sum = sum + i
           i = i + 1
       Loop While i <= 10
    
       Sheets(1).Cells(3, 1).Value = "Do Loop While"
       Sheets(1).Cells(3, 2).Value = "합계 : "
      Sheets(1).Cells(3, 3).Value = sum
   End Sub

 

③ Do Until Loop 반복문 사용

 

   Sub DoUntilLoop()
       Dim i As Integer
       Dim sum As Integer
           i = 0
           sum = 0
        
      Do Until i > 10
           sum = sum + i
           i = i + 1
       Loop


       Sheets(1).Cells(5, 1).Value = "Do Until Loop"
       Sheets(1).Cells(5, 2).Value = "합계 : "
       Sheets(1).Cells(5, 3).Value = sum
   End Sub

 

④ Do Loop Until 반복문 사용

 

   Sub DoLoopUntil()
       Dim i As Integer
       Dim sum As Integer
           i = 0
           sum = 0
        
       Do
           sum = sum + i
           i = i + 1
       Loop Until i > 10
    
       Sheets(1).Cells(6, 1).Value = "Do Loop Until"
       Sheets(1).Cells(6, 2).Value = "합계 : "
       Sheets(1).Cells(6, 3).Value = sum
   End Sub

 

예제 ① ~ ④까지 실행한 결과는 [그림 1]과 같습니다.

 

Do_Loop_예제_실행_결과
[그림 1] Do Loop 예제 실행 결과

[그림 1]을 보시면 4가지 예제 모두 결과 값은 55인 것을 확인할 수 있습니다. 하지만, While을 사용할 때의 조건은 i <= 10이고 Until을 사용할 때의 조건은 i > 10 임을 알 수 있습니다.

이는 While의 경우에는 i 값이 10이 될 때까지 Do Loop 반복문을 반복 실행해야 하기 때문이고

Until의 경우에는 i 값이 11이 될때까지 Do Loop 반복문을 반복 실행해야 하기 때문입니다. 만약 Until의 조건은 i <= 10으로 준다면 i 값이 10이 되었을 때 조건이 참이 되므로 실행문을 실행하지 않고 Do Loop 반복문을 빠져나오게 됩니다. 이렇게 되면 sum의 값은 45가 되게 됩니다.

 

반응형