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 문을 이용하여 반복할 횟수지정하여 처리하기 |
▼ 그럼 조건이 하나가 아닌 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 |
▼ 좀더 if 구문을 간단하게 표현하는 방법이 있습니다. 마지막 End If 구문을 없애고 일렬로 배치를 하는 것입니다. IF 구문 안에 들어가 있는 여러 줄의 소스는 “:” 콜론으로 배치를 하는 것입니다.
▼ 다음은 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 GoTo 문 이용해서 줄로 분기하기 ▶ 엑셀 VBA 이항 논리 연산자 And, Or, Xor 와 단항 논리 연산자 Not ▶ 엑셀 VBA Function 와 Sub 프로시저의 차이점과 사용법 알아 보기 ▶ 엑셀 VBA - For 문을 이용하여 반복할 횟수지정하여 처리하기 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 함수 Mid 문자열의 일부를 추출하기 (1) | 2023.11.18 |
---|---|
엑셀(VBA) InputBox 함수 이용해서 입력값 받기 (0) | 2023.11.12 |
엑셀 Excel VBA 개발 도구를 이용해서 버튼 삽입하고 함수 연결하기 (2) | 2023.11.11 |
엑셀 VBA Select Case 문 사용해서 다중조건 처리하기 (0) | 2023.11.09 |
엑셀 VBA 파일 다이얼로그 사용하기 (0) | 2023.09.17 |
엑셀 VBA 셀 영역 선택하는 여러가지 방법 (1) | 2023.09.06 |
엑셀 VBA Range 객체 중 Areas 속성 사용하기 (0) | 2023.08.25 |
엑셀 VBA 년도, 월 비교해서 발생 횟수 조회하는 방법 (1) | 2023.08.09 |