Please Enable JavaScript!
Gon[ Enable JavaScript ]

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

엑셀(Excel)/VBA
반응형

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 GoTo 이용해서 줄로 분기하기
엑셀 VBA 이항 논리 연산자 And, Or, Xor 단항 논리 연산자 Not
엑셀 VBA Function 와 Sub 프로시저의 차이점과 사용법 알아 보기
셀 VBA - For 문을 이용하여 반복할 횟수지정하여 처리하기

 

 

 

 

엑셀 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 지시 구문 사용하는 방법&#44; IF … ELSEIF … ELSE … ENDIF

 

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 VBA GoTo 이용해서 줄로 분기하기
엑셀 VBA 이항 논리 연산자 And, Or, Xor 단항 논리 연산자 Not
엑셀 VBA Function 와 Sub 프로시저의 차이점과 사용법 알아 보기
셀 VBA - For 문을 이용하여 반복할 횟수지정하여 처리하기
반응형
Posted by 녹두장군

댓글을 달아 주세요