프로젝트 및 실습/VBA

[VBA] Do While과 Do Until

jooona 2022. 8. 2. 21:50
반응형

VBA에서 지원하는 여러 반복문 중에 Do While문과 Do Until문이 존재합니다. 둘 다 For문이나 While문에 밀려 잘 사용되지는 않지만 그 차이를 알아보겠습니다.

 

 

 

Do While은 뒤에 따라오는 조건에 부합하는 경우 계속 반복을 수행합니다. 그리고 Do Until은 뒤따라오는 조건이 부합할 때까지 반복을 수행합니다. 말이 조금 모호한데 예시를 들어 자세히 알아보겠습니다.

 

Sub Do_While_Example()
    
    Dim count As Integer
    
    Do While count < 5
        Debug.Print count
        count = count + 1
    Loop
    
End Sub

간단한 Do While문 예시입니다. count라는 변수가 5보다 작은 경우 1씩 증가시켜주는 코드이죠. Debug.Print를 통해 출력해보면 당연히 0, 1, 2, 3, 4가 차례로 출력됩니다. 

 

반면 Do Until의 경우를 보겠습니다.

Sub Do_Until_Example()
    
    Dim count As Integer
    
    Do Until count < 5
        Debug.Print count
        count = count + 1
    Loop
    
End Sub

똑같은 코드에 While만 Until로 변경했습니다. 이 경우 결과 값이 어떻게 나올까요?

 

정답은 "아무것도 출력되지 않는다."입니다.

 

count가 최초에 0이고, 이미 5보다 작기 때문에 반복문을 한 번도 돌지 않는 것이죠. Do Unitl문은 count가 5보다 작을 때까지 반복하기 때문에 애초에 5보다 작은 값이 count에 들어가 있어서 반복문에 들어가지도 않는 것입니다.

 

그렇다면 위에서 본 Do While문과 같은 결과를 출력하려면 어떻게 고쳐야 할까요?

 

Sub Do_Until_Example()
    
    Dim count As Integer
    
    Do Until count = 5
        Debug.Print count
        count = count + 1
    Loop
    
End Sub

네. "count=5 일 때까지  반복한다"로 코드를 수정해주면 0, 1, 2, 3, 4를 차례로 출력합니다.

 

Do While과 Do Until의 차이가 좀 느껴지시나요? 

반응형