[VBA 제15강] 실행순서 제어하기 Ⅰ 썸네일 이미지
[VBA 제15강] 실행순서 제어하기 Ⅰ
콘텐츠 타입 MS 오피스 엑셀 2003(2007, 2010가능), Windows XP 이상
용량0KB
조회2,630
즐겨찾기
[VBA 제15강] 실행순서 제어하기 Ⅰ를 즐겨찾기 한 횟수는 0 0입니다.
이용등급 유료 (회원권 or 단품 구매)
평생이용

엑셀쿠키는 한 번의 다운로드로 평생 이용하실 수 있습니다. 프로그램과 데이터를 고객의 PC에 저장하여 사용하는 형식이라 안전하게 사용 가능합니다. 이용 기간에 따른 추가 비용이 발생하지 않아 매우 경제적입니다.

맞춤형

중소기업의 개별 특성, 다양한 업무를 상황별로 고려하여 제작된 프로그램을 업데이트합니다. 분야별 5,000여 개의 프로그램 중 내 업무에 맞는 프로그램을 다운받는 맞춤형 서비스입니다.

쉬운 활용

쿠키 프로그램은 MS Excel의 기본 사용법만 알면 즉시 사용할 수 있는 매운 쉬운 프로그램으로 누구나 손쉽게 배우고 사용할 수 있습니다.

중소기업의 모든 업무자동화!

엑셀쿠키로 모두 해결하세요!
1 Vector 11
image 59
image 60
image 56
Pro display XLS Vector 12
Microsoft Excel 표준

쿠키의 업무자동화 프로그램은 VBA 코드로 개발된 제품으로
MS Excel 프로그램 기반으로 사용 가능하며,
자체적으로 개발한 기능은 물론,
MS Excel의 강력한 기능을 모두 사용하실 수 있습니다.

241202_coukey_BI_white2_07

엑셀쿠키는 기업의 생산성을 높이는 업무자동화 지원 프로그램입니다.

image 62 image 70 image 61 image 71 image 65 image 66 image 64 image 68
image 63 image 69
제품 상세정보

 




[ 기초 강좌 ]

 

제 15 강

실행순서 제어하기 Ⅰ

 

실행순서 제어하기에 대하여

알아봅니다.

 

 

이렇게 사용해요

오늘은 프로시저의 실행 순서를 제어하는 몇 가지 방법을 소개해 드릴까 합니다.

 

보통 VBA 프로시저를 실행하면 코드의 맨 윗 라인부터 시작해서 밑으로 한 라인씩 내려가며 실행이 됩니다.

앞서 소개해 드렸던 매크로 기록 기능을 사용해서 작성한 코드를 보면 바로 이런 방식으로 작성되고 실행이

되는 것을 알 수 있습니다.

그렇지만, 경우에 따라서는 이러한 순차적인 방식의 틀에서 벗어 나 특정 위치의 라인을 먼저 실행하고 위의

라인이 나중에 실행되기도 합니다.

이처럼 프로시저의 실행순서를 제어, 즉 바꾸는 방법에는 아래와 같이 몇 가지의 형태가 있습니다.

 

  GO TO 文

  If ~ Then 구문

  Select Case 구문

  For ~ Next 구문

  Do While 반복 구문

  Do Until 반복 구문

 

프로그램 내에서 실행순서를 바꾸는 가장 직접적인 방법이 GO TO 문을 사용하는 것입니다.

 

   Sub GoToDemo( )

      Dim UserName As String

      UserName = InputBox("귀하의 이름을 입력하세요","//김우수")

      If Len(UserName) = 0 Then GoTo mm

      MsgBox UserName & "님 환영합니다!!!"

      Exit Sub

         mm:

        MsgBox "아무 것도 입력하지 않으셨군요...", ,"//김우수"

    End Sub

 

위의 예에서 보듯이 "GoTo 위치"라고 해 주면 하늘이 두쪽 나도 "위치"로 가서 그 이후의 문장을 실행합니다.

그런데, 이 GoTo 문은 옛날 DOS시절에 사용하던 BASIC(Visual Basic말고)에서 사용하던 제어구조입니다.

이 구문은 달리 쓰지 않을 도리가 없을 때에 한해서 사용하는 것이 좋습니다. 여기서 쓸 수 밖에 없는 경우라는 것은

제 경험에 의하면, 에러 트래핑(ErrorTrapping), 즉 에러가 발생할 경우에 대비하여 어떤 검문소를 하나 설치하는 경우

정도 일 것입니다. 그 정도로 잘 사용을 하지 않습니다.

 

 If ~ Then 구문

 

아마도 VBA에서 가장 빈번하게 사용되는 명령 중의 하나가 If ~ Then 구문이 아닌가 생각됩니다. 엑셀에서

함수를 공부하실 때에도 다중 IF( )함수를 많이 사용하셨을 것입니다.

 

 Sub IfThen( )

    If Time >=0.5 Then

       MsgBox "Good Afternoon!!!"

   Else

       MsgBox Good Morning!!!"

  End If

 End Sub

 

 

  If [조건식] Then [참일 경우] [Else 거짓인 경우] End If

 

 

이것이 If ~ Then 구문의 가장전형적인 형태일 것입니다.

컴퓨터라는 것은 모든 것들 0과 1의 조합으로 받아 들입니다. 문자열은 물론이고 날짜나 시간인 경우에도

이것을 숫자로 받아 들이는 것입니다. 날짜에 있어서 1이라고 하면 컴퓨터(IBM 기종)는 1900년 1월 1일로

받아 들이게 됩니다. 또한 시간에 있어서도 1이라고 하면, 자정을 의미합니다.

즉 0이면 자정을, 0.5이면 정오를, 0.25이면 오전 6시, 0.75이면 오후 6시를 의미하는 것이지요

 

따라서, 위 프로시저에서 Time >=0.5 라는 것은 현재 시간이 정오보다 크냐 작으냐를 묻는 것이 되겠죠?

그래서 0.5보다 크면 "Good Afternoon!!!"이라는 문자열을, 그렇지 않으면 또다른 문자열을 화면상에 뿌려 주게 됩니다.

여기서 Else ~ 이하에 해당되는 조건이 많이 있을 경우, 다음과 같이 보다 세분화해서 구분을 할 수도 있습니다.

 

  Sub IfThen2( )

     If Time < 0.5 Then

        MsgBox "Good Morning!", ,"//김우수

     ElseIf Time > = 0.5 And Time < 0.75 Then

        MsgBox "GoodAfternoon"

     ElseIf Time > = 0.75 Then

        MsgBox "잘자 내꿈꿔!", ,"//김우수"

  End Sub

        

 

이 프로시저의 경우 세가지의 서로 다른 조건을 비교해서 처리를 해 주고 있지요

그런데, 비교해야 할 조건식이 많은 경우, 상당히 복잡하게 보입니다.

이론적으로 중첩 If 문장은 7개까지는 확장이 가능하지만, 비교 조건이 3개를 넘어 가면 Select Case문을

사용 할 것을 권장합니다.

 

 Select Case 구문

 

위의 IfThen2 프로시저를 Select Case 文을 써서 이렇게 변경해 줄 수도 있습니다.

 

 Sub SelectCase( )

    Dim Msg As String

    Select Case Time

       Case Is < 0.5

          Msg = "Good Morning!"

       Case 0.5 To 0.75

          Msg = "Good Afternoon!"

       Case Else

          Msg = "잘자 내꿈꿔!"

       End Select

      MsgBox Msg, , "//김우수"

 End Sub

 

어떠신가요? 훨씬 보기가 편해 졌죠 읽기가 편할 뿐만 아니라 새로운 조건을 추가할 경우에도 Case문만 추가하면 되고

10개 , 100개의 조건 추가도 가능하겠죠?

 

자 그럼 끝으로 Select Case문을 사용한 예제를 하나만 더 살펴 보고 가도록 하겠습니다.

 

 Sub SelectCase2( )

   Dim inNum As Integer

     inNum = InputBox("0에서 10까지의 숫자를 입력하세요.","//김우수")

 

   Select Case inNum

     Case 0

      MsgBox "제로!"

     Case 1,3,5,7,9

      MsgBox "홀수!"

     Case 2,4,6,8,10

      MsgBox :짝수!"

     Case Else

      MsgBox "범위외의 숫자입니다!"

     End Select

 End Sub

 

이해가 되셨나요

만약에, 위 프로시저와 같은 결과를 구하되, If ~ Then문을 사용한다면 어떻게 해야 했을까를 잘 생각해 보면

아마, Select ~ Case문에 대한 이해가 더욱 빠를 듯 싶습니다.

다만 Select ~ Case 문을 사용함에 있어서 하나의 Select~Case가 있으면 반드시 이에 대응하는 End Select 문이

존재해야 한다는 사실을 잊지 마시기 바랍니다.

 

저작권정보
1. 콘텐츠의 저작권은 쿠키(www.coukey.co.kr)에 있으며, 사용권한은 1인 1카피입니다.
2. 다운로드 받은 콘텐츠는 본인(본인회사)만 사용할 수 있습니다.
3. 다른 사람과 공유하거나 원본 또는 수정 후 무단전제,무단배포,무단판매,무단 공유할 수 없습니다.
4. 웹상에서 배포는 상업,비상업적 목적을 불문하고, 손해배상등 가중처벌됩니다.
[VBA 제15강] 실행순서 제어하기 Ⅰ
이용후기

업무자동화 맞춤제작

고객님의 상황에 100% 맞춘 콘텐츠 제작 전문 서비스를 이용해 보세요.
프리미엄 무료 이벤트 중