[ 기초 강좌 ]
제 16강
실행순서제어하기Ⅱ
실행제어구문에 대해 알아봅니다.
이럴 때 필요해요
엑셀에 내장된 VBA엔진을 이용하여 더 다양한 프로그램을 구축하기위해 사용합니다.
이렇게 사용해요
오늘은 지난 시간에 소개해 드린 실행순서 제어구문 중에서 GoTo, If ~ Then, Select Case文 등에 이어
나머지 3가지의 제어문에 대해 소개해 드릴까 합니다.
For ~ Next 와 Do While 또는 Do Until 이 세가지를 특별히 Loop block Instruction 이라고 하기도 합니다.
특정한 조건을 만족하면 계속해서 프로그램을 실행하기 때문에 붙여 진 이름이지요.
For ~ Next 文
Loop block 을 만드는 가장 간단한 방법이 For ~ Next 구문입니다.
몇 강좌 전에 소개해 드렸었던 For Each ~ Next 문도 바로, 이 For ~ Next 의 한 형태입니다.
이 For ~ Next 문은 앞에서도 몇 차례 등장했었으므로 그리 낯설지는 않을 것입니다만, 한번 더
간단히 짚고 넘어 가도록 하겠습니다.
For counter= 시작 To 끝 [Step 값]
… 어쩌고 …
Next [counter]
위에서 예시한 것이 For ~ Next 문의 가장 일반적인 형태라고 할 수 있습니다.
저 식을 실행시키면 이연걸부터 성룡까지 텍스트박스로 나타납니다.
이제 이 For ~ Next 문에 대해서는 어느 정도 이해되시리라 생각됩니다만, 그런데 만약에 For ~ Next 문을사용하지 않고,
동일한 결과를 구하려면 어떻게 해야 할까요? ^^
아마, 아래와 같이 무식한(?) 코딩을 해 주셔야 할 것입니다.
MsgBox Cells(35, 2)
MsgBox Cells(36, 2)
.
.
MsgBox Cells(41, 2)
자! 어떻습니까? 이제 응용력만 약간 발휘하면, 얼마든지 재미있는 것을 만들수 있을 것 같지 않습니까?
많이들 응용하시기 바라며, 다음으로 넘어 갑니다! ^^
Do ~ While 文
Loop block을 만드는 또한가지 방법은 Do ~ While 문을 사용하는 것입니다.
이것은 특정한 조건을 만족하는 동안에는 계속해서 특정 명령을 수행하는 것으로, Do ~ While문은
아래의 두가지 형태를 가집니다.
Do [While 조건] Do
… 어쩌고 … … 어쩌고 …
Exit Do Exit Do
… 어쩌고 저쩌고 … … 어쩌고 저쩌고 …
Loop Loop [While 조건]
위 두가지 형태의 차이점은, 다음의 예제를 보시면 명확해 집니다.
Sub DoWhileDemo1()
Sheets(2).Activate
Range("C4").Activate
Do While Not IsEmpty(ActiveCell)
ActiveCell.Value= 0
ActiveCell.Offset(1, 0).Select
Loop
End Sub
이 프로시저는 현재 셀 포인터가 위치해 있는 셀(여기서는 Sheets2의 C4 셀)을 시작으로 해서 아래로 한칸씩
내려가면서 0(zero)을 셀에 삽입합니다.
그리고 루프문을 한 바퀴씩 돌 때 마다 그 다음의 셀을 ActiveCell로 설정을 해 주고 있습니다.
따라서, 이 프로시저는 경우에 따라 Do ~ Loop 내의 실행문을 한번도 실행하지 않을 수도 있겠지요?
즉, 맨 처음 셀부터 아무 값도 입력된 것이 없다면, 아예 한번도 실행되지가 않을수 있습니다.
왜냐구요? Do문 안으로 들어가기 전에 미리 조건 비교를 해서 ActiveCell이 공란이면 Do ~ Loop 안으로
들여 보내지를 않기 때문이지요. 그런데, 아래의 경우에는 어떤가요?
Sub DoWhileDemo2()
Sheets(2).Activate
Range("C4").Activate
Do
ActiveCell.Value= 0
ActiveCell.Offset(1, 0).Select
Loop While Not IsEmpty(ActiveCell)
End Sub
이번에는 While이 Loop 다음에 있습니다. 이 경우에는 Do ~ Loop 사이에 있는 실행문을 적어도 한번은 실행을 하게 되지요.
결국, 이 두가지 형식의 차이점은 어느 시점에서 Loop문을 종료하느냐 의 차이인 것입니다. 그렇지만
실제 결과를 놓고 보면 같게 되지요.(적어도 위의 경우에는…)
Do ~ Until 文
Do ~ Until 루프문은 Do ~ While 문과 매우 흡사합니다.
차이점은 Do While 문은 조건식이 True인 동안에는 명령을 계속 수행하는데 비해, Do Until 문은 조건식이
True가 될 때까지 명령을 수행합니다.
Do [Until 조건] Do
… 어쩌고 … … 어쩌고 …
Exit Do Exit Do
… 어쩌고 저쩌고 … … 어쩌고 저쩌고 …
Loop Loop[Until조건]
While이 Until로 바뀌었다는 것 말고는 Do ~ While 구문과 똑같은 형태지요?
사용예제 역시 마찬가지입니다. While을 Until로 바꿔 줄려면 True와 False만 서로 바꿔 주면 되겠지요?
즉, 아래와 같이 말입니다.
실행순서를 제어하는 구문은 실제 프로그래밍 작업시 빈번하게 사용되는 것들입니다.
모두 다섯 가지 밖에(?) 안되므로 잘 정리해 두시기 바랍니다.
2. 다운로드 받은 콘텐츠는 본인(본인회사)만 사용할 수 있습니다.
3. 다른 사람과 공유하거나 원본 또는 수정 후 무단전제,무단배포,무단판매,무단 공유할 수 없습니다.
4. 웹상에서 배포는 상업,비상업적 목적을 불문하고, 손해배상등 가중처벌됩니다.