본 강의에서는 Do Loop 반복문에 대해 알아보겠습니다.

 

1. Do While Loop 문

 

Do While Loop 문은 While 옆의 조건문이 거짓이 될 때까지 실행합니다.

Sub Macro()
      Dim row As Integer
      row = 1 
      Do While row < 11
            Cells(row,1).value = row
            row = row + 1
      Loop
End Sub

*반복문의 과정을 보기 위해 시간지연을 적용하였습니다.

위의 예제에서 변수 row의 값은 반복문이 실행될 때마다 값이 1씩 증가합니다.

반복문이 실행되며

Cells(1,1).value = 1

Cells(2,1).value = 2

Cells(3,1).value = 3

.

.

.

Cells(10,1).value = 10 까지 실행되고 row의 값이 11이 되어 조건문이 거짓이 되므로 반복문을 빠져나가게 됩니다.

 

참고로 조건문을 반복문의 위가 아닌 아래로 내릴 수도 있습니다.

Sub Macro()
      Dim row As Integer
      row = 1 
      Do 
            Cells(row,1).value = row
            row = row + 1
      Loop While row < 11
End Sub

*반복문의 과정을 보기 위해 시간지연을 적용하였습니다.

결과는 동일합니다.

 

그럼 조건문을 굳이 왜 아래로 내릴까요.

 

조건문을 아래로 내리게 되면 적어도 한번은 반복문 안에 있는 매크로를 실행시킬 수 있습니다.

Sub Macro()
      Dim row As Integer
      row = 5
      Do While row < 5
            Cells(row,1).value = row
            row = row + 1
      Loop
End Sub

조건문이 위에 있는 경우

위의 예제에서는 반복문 안쪽의 매크로를 실행하지 않습니다.

Sub Macro()
      Dim row As Integer
      row = 5
      Do 
            Cells(row,1).value = row
            row = row + 1
      Loop While row < 5
End Sub

조건문이 아래에 있는경우

그러나 위의 예제에서는 적어도 한번의 반복문을 실행하기 때문에 Cells(5,1)의 값이 5로 변하게 됩니다.

 

2. Do Until Loop 문

Sub Macro()
      Dim row As Integer
      row = 10
      Do Until row = 0
            Cells(11-row, 1).value = row
            row = row - 1
      Loop
End Sub

*반복문의 과정을 보기 위해 시간지연을 적용하였습니다.

이번에 row는 10부터 시작해 1씩 감소합니다.

Cells(1,1).value = 10

Cells(2,1).value = 9

Cells(3,1).value = 8

.

.

.
Cells(1,1).value = 1 까지 실행 후 row가 0이 되면 Until의 조건문이 참이 되므로 반복문을 빠져나오게 됩니다.

 

Do Until Loop 문도 Do While Loop 문 처럼 조건문을 아래로 내려서 사용이 가능합니다.

Sub Macro()
      Dim row As Integer
      row = 10
      Do
            Cells(11-row, 1).value = row
            row = row - 1
      Loop Until row = 0
End Sub

위의 예제도 반복문은 적어도 한번은 실행하게 됩니다.

 

이상으로 Do Loop 반복문 다루기를 마치겠습니다.


WRITTEN BY
컴공학도

,