드디어 VBA반복문의 마지막 Do ~ Loop문에 도달하였습니다. 반복문의 사용방법과 효과는 다 비슷비슷합니다. 다만 상황에 따라 어떠한 반복문을 선택할지를 결정하면 되는 것이죠. 오늘은 Do ~ Loop를 사용해서 업무자동화를 위한 단계로 한 발짝 다가가 보도록 하겠습니다.
Do ~ Loop문의 경우는 사실 실무에서 많이 사용되는 편은 아닙니다. 이유는 For문과 For Each문의 활용도가 탁월하기도 하며, Do ~ Loop를 사용시 무한대로 순환하는 단점이 존재하기 때문이죠. (물론 Exit Do를 사용하여 무한 순환을 강제로 종료시켜 줄수도 있습니다.) 그럼에도 반복문의 일환으로 알고넘어가면 VBA실력향상에 도움이 될 수 있기 때문에 짚고 넘어가도록 하겠습니다.
DO ~ Loop문 (While, Until)의 기본 문법에 대해 알아보자.
Do ~ Loop문은 크게 4가지 형태로 사용이되는데요.
바로 ① Do while ~ Loop, ② Do until ~ Loop, ③ Do ~ Loop while, ④ Do ~ Loop until의 형태로 사용됩니다.
그럼 형태별 기본문법을 한번 살펴보시죠.
① Do while ~ Loop
Do while 조건
실행코드
Loop
② Do until ~ Loop
Do until 조건
실행코드
Loop
③ Do ~ Loop while
Do
실행코드
Loop while
④ Do ~ Loop until
Do
실행코드
Loop until
Do ~ Loop문(While, Until)의 원리를 알아보자.
Do ~ Loop문의 경우 형태는 조금씩 다르나 사용하는 방법은 모두 유사함을 알 수 있습니다.
첫 번째로 주의하셔야 할 점은 While과 Utill의 미묘한 차이일 텐데요. 영어 뜻을 생각해 보면 그나마 이해하기가 수월합니다.
① Do : 실행하다.
② while : ~동안
③ until : ~까지
④ Loop : 반복하다.
예를한번 들어 볼까요.
Do while ~ Loop문의 예시입니다.
Dim i As Long
Dim j As Long
Do while i <= 10
' i가 10 이하일 동안 실행해라
i = i + 1
j = j +3
' 실행코드를
Loop
' 반복해서
코드를 해석해 보면 i가 10 이하일 "동안" 실행코드를 반복해서 실행해라. 가 되겠네요.
Do until ~ Loop문의 예시입니다.
Dim i As Long
Dim j As Long
Do until i <= 10
' i가 10 이하일 동안실행해라
i = i + 1
j = j +3
' 실행코드를
Loop
' 반복해서
코드를 해석해 보면 i가 10 이하일 때 "까지" 실행코드를 반복해서 실행해라. 가 되겠네요.
다음은 Do ~ Loop while문의 예시입니다.
Dim i As Long
Dim j As Long
Do
' 실행해라
i = i + 1
j = j +3
' 실행코드를
Loop while i <= 10
' i가 10 이하일 동안 반복해서
코드를 해석해 보면 i가 10 이하일 "동안" 실행코드를 반복해서 실행해라. 가 되겠네요.
사실 While이 사용된 위치만 변경될 뿐 위에서 사용되었던 예제와 동일한 결과를 가져옵니다.
다음은 Do ~ Loop until문의 예시입니다.
Dim i As Long
Dim j As Long
Do
' 실행해라
i = i + 1
j = j +3
' 실행코드를
Loop unitl i <= 10
' i가 10 이하가 될 때까지 반복해서
코드를 해석해 보면 i가 10 이하가 될때 "까지" 실행코드를 반복해서 실행해라. 가 되겠네요.
마찬가지고 until이 사용된 위치만 변경될 뿐 위에서 사용되었던 예제와 동일한 결과를 가져옵니다.
마치며
지금까지 Do ~Loop문의 사용방법에 대해 알아보았습니다.
사실 Do ~ Loop문의 경우는 VBA를 보완해 주는 성격으로 많이 사용되기 때문에 다른 반복문보다는 사용빈도가 적은 것은 사실입니다. 그럼에도 반복문의 기본이 되는 부분이니 알아두면 나쁠 건 없겠죠!
또한 Do ~ Loop문의 형태를 R(통계프로그램)의 반복문의 형태와 유사하기 때문에 공부해 놓으면 추후 R을 학습하실 때 도움이 될 것입니다.
▼▼▼함께 보면 좋은 글▼▼▼
노력은 나를 배신하지 않는다.
댓글