엑셀 VBA IF 지시 구문 사용하는 방법, IF … ELSEIF … ELSE … ENDIF

엑셀(Excel)/VBA

엑셀 VBA IF 지시 구문 사용하는 방법, IF … ELSEIF … ELSE … ENDIF

 

환경: Microsoft Excel 2013

 

VBA 에서 작업을 분기하는 방법 중 하나가 IF 문을 사용하는 것입니다. IF 문은 조건이 True 혹은 False 냐에 따라 명령문을 사용할 수 있도록 만들어진 구조입니다. IF 의 조건문에 들어가는 문장은 비교 연산자나 논리 연산자를 사용해서 값, 변수 등을 비교해 True/False 를 리턴하게 됩니다.

 

IF 문의 기본 구조는 다음과 같습니다. 아래 구문은 단일 조건일 때 사용하는 구조입니다. condition True 이면 statements 를 실행하고 False 이면 elsestatements 를 수행합니다.

 

If condition Then

   statements

Else

   elsestatements

End If

 

*  condition : 조건의 결과값이 True 또는 False 데이터 형식

*  statements : condition True 일 때 실행되는 블록 영역

*  elsestatements : condition False 일 때 실행되는 블록 영역

 

 IF 구문을 사용해서 만들어 본 샘플입니다. count 0 이므로 조건인 count = 0 이 참이므로 message = "There are no items." 이 실행되겠죠. 결국 메시지 박스에서는 "There are no items." 텍스트가 출력이 됩니다.

 

Sub sub1()

    Dim count As Integer

    Dim message As String

   

    count = 0

   

    If count = 0 Then

        message = "There are no items."

    Else

        message = "There are " & count & " items."

    End If

 

    MsgBox message

End Sub

 

엑셀 VBA IF 지시 구문 사용하는 방법, IF … ELSEIF … ELSE … ENDIF

 

그럼 조건이 하나가 아닌 2개 이상일 때는 어떻게 해야 할까요? 여러 조건을 걸고 싶을 때 Elseif 가 추가합니다. 조건이 늘어날 때 마다 계속해서 추가가 가능합니다. IF Elseif 의 조건 모두 True 가 아니라면 Else 에 있는 elsestatements 가 실행되겠죠.

 

If condition Then

   statements

Elseif elsecondition Then

   elseifstatements

Else

   elsestatements

End If

 

아래 소스는 Elseif 를 사용해서 만든 샘플입니다. count 1 이기 때문에 Elseif count=1 True 가 되겠죠. 그래서 message = "There is 1 item." 실행되고 메시지 창에는 "There is 1 item." 텍스트가 출력됩니다.

 

Sub sub1()

    Dim count As Integer

    Dim message As String

   

    count = 1

   

    If count = 0 Then

        message = "There are no items."

ElseIf count = 1 Then

        message = "There is 1 item."

    Else

        message = "There are " & count & " items."

    End If

 

    MsgBox message

End Sub

 

엑셀 VBA IF 지시 구문 사용하는 방법, IF … ELSEIF … ELSE … ENDIF

 

좀더 if 구문을 간단하게 표현하는 방법이 있습니다. 마지막 End If 구문을 없애고 일렬로 배치를 하는 것입니다. IF 구문 안에 들어가 있는 여러 줄의 소스는 “:” 콜론으로 배치를 하는 것입니다

엑셀 VBA IF 지시 구문 사용하는 방법, IF … ELSEIF … ELSE … ENDIF

 

다음은 IF 에 들어가는 condition 에 논리 연산자를 넣어서 여러 조건에 만족하는 결과값을 얻을 수 있도록 만들 수 있습니다. 논리연산자의 종류는 다음과 같습니다.

 

*  AND : 조건식 모두 만족해야 True 가 된다.

*  OR : 조건식 중 하나만 만족해도 True 가 된다.

*  NOT : 조건식을 부정한다. True 결과값 앞에 Not 을 붙이면 False 가 된다.

*  XOR : AND NOT

 

아래 샘플에서는 A = 11 이기 때문에 If A > 10 And A < 20 Then True 가 되겠죠. 논리 연산자가 And 이므로 10 < A < 20 사이값에 들어가야 True 가 되는 것입니다

 

Sub sub1()

 

    A = 11

   

    If A > 10 And A < 20 Then

        MsgBox "조건식 : "

    Else

        MsgBox "조건식 : 거짓"

    End If

   

End Sub

 

Not 은 부정 연산자 입니다. 조건이 True 라면 Not 으로 인해 False 로 바뀌는 것이죠. 아래 소스처럼 A=11 일 때 If A > 10 And Not (A < 20) Then 조건은 True And False 가 되기 때문에 결과 값은 False 가 되는 것입니다.

 

Sub sub2()

 

    A = 11

   

    If A > 10 And Not (A < 20) Then

        MsgBox "조건식 : "

    Else

        MsgBox "조건식 : 거짓"

    End If

   

End Sub

 

엑셀 VBA IF 지시 구문 사용하는 방법, IF … ELSEIF … ELSE … ENDIF

저작자 표시 비영리 변경 금지
신고
Posted by 녹두장군