배움터  
  HOME > 배움터 > Daily Tip
Daily Tip

제품:   Excel 버전:   2003
검색어:   Do Loop
제목:   반복 실행문 중 Do~Loop문 알아보기
     
 


 

 [엑셀] 반복 실행문 중 Do~Loop문 알아보기

 오늘은 11월5일에 진행하는 장미희님엑셀 매크로&VBA 과정에서 코드의 반복 실행하는 방법에 대해서 살펴보겠습니다.

  반목 실행문을 사용하면 연속적인 명령문을 반복 처리할 수 있습니다. 조건이 False가 될 때까지 명령문을 반복 처리하는 반복문과 조건이 True가 될 때까지 명령문을 반복 처리하는 반복문이 있습니다. 지정한 횟수만큼 또는 개체 집합 안에 있는 각 개체에 대해 명령문을 반복 처리하는 루프도 있습니다. 이번에는 Do...Loop 문에 대해 알아봅니다.

  Do...Loop 문은 조건의 위치에 따라 두 가지 형식을 사용할 수 있는 데,
첫번째 형식은, 조건을 처음에 검사하고 조건이 True일 때 명령문을 반복하는 형식입니다.
두번째 형식은, 반복문을 최소한 한번은 실행 한 후에 조건을 검사하는 형식입니다.

  Do...Loop 문을 사용하면 범위내의 일정한 명령문을 무한하게 반복 실행할 수 있습니다. 명령문은 루프 동작 수행조건이 True일 때, 또는 True가 될 때까지 반복해서 수행하도록 지정할 수 있습니다.

1. 반복 구조를 실행하기 전에 조건 검사하는 Do...Loop문

[형식]

Do{{While / Until} 조건]
[명령문]
[Exit Do]
[명령문]
Loop

  다음 프로시저는 반복문 안의 명령문이 10번 실행되는 경우로 While 키워드를 사용하여 Do...Loop 문에서 조건을 먼저 확인하는 방법입니다. D0_While_1 프로시저에서 Num 변수와 Sum변수가 0으로 설정되어서 Num이 1에서 10까지 반복되면서 Sum에다 변경된 Num값을 더하는 코드입니다. Num이 10이 되면 반복문을 벗어납니다.

  Do_While_1프로시저를 실행하면 Num과 Sum의 변화된 값을 표시하는 메시지 상자를 10번 표시합니다. 물론 [확인] 버튼을 계속 클릭해주어야 합니다.

  Do_While_1문의 Num이 10보다 작은 동안 명령문을 반복하라는 조건을 만족할 때까지 실행하는 것이므로 Num변수가 10이 되면 조건에 거짓이 되므로 반복문을 종료합니다.

  Num의 변화를 살펴보면 0에서 시작하여서 Num=Num+1이라는 명령문을 한번 반복할 때마다 1씩 증가하여 10이 되면 이미 명령문에서는 10이 더해진 상태이고, 10보다 작은 동안이라는 조건은 거짓이 되므로 실행을 프로시저를 종료합니다.

2. 조건을 검사하기 전에 최소한 한번 실행하는 Do...Loop 문

[형식]

Do{{While / Until} 조건]
[명령문]
[Exit Do]
[명령문]
Loop

 
[형식]

Do{{While / Until} 조건]
[명령문]
[Exit Do]
[명령문]
Loop

 
[형식]

Do
[명령문]
[Exit Do]
[명령문]
Loop [{While /Until} 조건]

  이번 프로시저는 While 키워드를 사용하여 Do...Loop 문에서 반복문 내의 명령문을 최소한 한번은 수행하고 조건을 확인하는 형식으로 Do_While_2 프로시저에서는 조건이 반복되어야 하는 명령문보다 나중에 위치하여서 조건을 검사하므로 조건에 맞지 않아도 최소한 1번은 실행합니다.

  프로시저를 실행하면 "11까지의 합계는 11입니다."라는 메시지 상자를 표시합니다.
Num이 처음부터 10이므로 1이 더해져서 11이지만 조건이 나중에 있으므로 조건에 거짓이지만 반복문내의 명령문을 1번 수행을 합니다.
  While 키워드가 처음에 있느냐, 아니면 나중에 있느냐가 중요한 부분입니다.

3. Do...Loop 루프 문에서 빠져나가기

  Exit Do 문을 사용하면 Do...Loop 를 빠져나갈 수 있습니다. 무한 루프와 같은 특정 상황에서 빠져나갈 때 사용할 목적이므로, If...Then...Else 문이나 Select Case 문의 True 문 블럭안에 Exit Do 문을 사용합니다. 조건이 False이면 루프는 원래대로 실행된다.

  다음 예제에서는 i 변수에 무한 루프를 일으키는 값을 지정합니다. If...Then...Else 문은 조건을 확인하여 무한 반복하는 것을 방지합니다.

  Do_While_3을 실행하면 메시지 상자는 Num이 7이 되고 Sum이 28이 되는 때까지만 표시됩니다. If...Then...Else문의 지정된 조건대로 Sum이 30보다 같거나 작을 때까지만 메시지 상자가 표시되고 Sum이 30보다 커지면 반복문인 Do...Loop문을 벗어납니다.