엑셀 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 녹두장군

댓글을 달아 주세요

  1. 이석형 2019.08.24 16:10  댓글주소  수정/삭제  댓글쓰기

    혹시 한셀 스크립트 넣을때 질문하나 해도되나요?? ㅠㅠ
    정말 궁금한게 있어서 ㅠㅠ 스크립트 짤때 ..
    예로 a1셀이 1일때 a2셀에 10을 기입하게하고
    a1셀이 2일때 a3셀에 10을 기입하게하고
    a1셀이 3일때 a4셀에 10을 기입하게 하려면 어떻게 짜야하나요?? ㅠㅠ