Excel VBA 기초

Excel VBA - Do, Loop

kwangpal 2023. 12. 3. 01:40
반응형

Do, Loop

Do, Loop 는 For, Next 와 비슷한 용도인데

정해진 횟수만큼 실행이 아니라

어떤 조건에 도달할 때까지 계속 실행하는 것이다.

 

Sub Button_Click()

    Dim i As Integer
    
    Do While i < 10
        i = i + 1
        Range("A" & i) = i
    Loop
    
End Sub

 

위 코드는 i가 10보다 작을 동안

i를 1씩 증가시키면서

A열의 i번째 행에 i를 출력하는 작업을

반복하라는 거다.

 

처음에 i에 아무런 숫자도 입력하지 않았지만

기본적으로 0으로 입력되어 있다고 생각하면 된다.

 

위 코드를 실행하면 다음과 같은 결과를 얻게 된다.

 

 

위에서는 Do While을 썼지만

While을 Loop 뒤에 쓸 수도 있다.

 

Sub Button_Click()

    Dim i As Integer
    
    Do
        i = i + 1
        Range("A" & i) = i
    Loop While i < 10
    
End Sub

 

실행 결과는 똑같다.

 

 

Do Until을 쓸 수도 있다.

Do While은 어떤 조건에 맞는 동안 반복 실행인데

Do Until은 어떤 조건에 맞을 때까지 반복 실행이다.

 

Sub Button_Click()

    Dim i As Integer
    Dim j As Double
    
    j = 1
    
    Do Until j < 0.001
        i = i + 1
        j = j / 2
        Range("A" & i) = j
    Loop
    
End Sub

 

위 코드는 j에 1을 입력하고 반씩 나누는 작업을

j가 0.001보다 작아질 때까지 반복해서

A열 i번째 행에 출력하라는 거다.

 

실행 결과는 다음과 같다.

 

 

10번째 행에서 0.001보다 작은 숫자가 나왔기 때문에

반복 실행이 중단되었다.

 

위에서는 Do Until을 썼지만

Until을 Loop 뒤에 쓸 수도 있다.

 

Sub Button_Click()

    Dim i As Integer
    Dim j As Double
    
    j = 1
    
    Do
        i = i + 1
        j = j / 2
        Range("A" & i) = j
    Loop Until j < 0.001
    
End Sub

 

실행 결과는 똑같다.

 

 

Do, Loop를 사용할 때 주의점은

조건이 안맞을 경우 무한실행이 될 수도 있다.

 

위 코드에서 Loop Until j < 0.001 이 아니라

Loop Until j > 2 라고 했으면

무한실행이 될 것이다.

 

... 다행히도 i를 Integer 로 선언했기 때문에 32767번째 행에서 끝나긴 했는데

Long으로 선언했으면 더 오래 실행될 것이다.

 

무한실행을 강제종료하려면 

Esc 키를 누르면 된다.

 

 

습관적으로, 그리고 당황해서 Esc 키를 연타했는데

한번만 눌러도 된다.

 

 

반응형

'Excel VBA 기초' 카테고리의 다른 글

Excel VBA - 파일 저장 형식  (0) 2023.12.13
Excel VBA - GoTo  (0) 2023.12.03
Excel VBA - Select Case  (0) 2023.12.03
Excel VBA - If  (0) 2023.12.03
Excel VBA - For, Next  (0) 2023.12.02