티스토리 뷰

안녕하세요. 구스입니다. VBA의 조건문에 대해서 공부를 해볼까 합니다. 프로그래밍을 하다보면 조건을 걸러내야 할 때가 참 많습니다. 반복문 이상으로 많이 사용되는 것이 조건문인데요. VBA에서 조건을 처리할 수 있는 방법은 생각보다 다양합니다. VBA에서 처리할 수 있는 방법에 대해서 먼저 알아보도록 하겠습니다.


  • SELECT CASE 구문
  • IF문, IF ELSE문
  • IIF 함수와 Switch 함수


SELECT CASE문과 IF문을 이용하여 알고리즘에 대한 조건절을 만들 수 있습니다. 물론 사용하는 용도에 따라서 SELECT 구문이 나을 수도 있고, IF문이 나을 수도 있습니다. 개인적으로는 SELECT 문보다는 IF문을 더 자주 사용하기에 IF문에 대해서 오늘을 알려드릴까 합니다. 


홧팅2

(그렇습니다. 제마음대로 주제는 정하게 됩니다.)


IF문이란?


IF문은 여러개의 조건을 처리하는데 사용되는 구문입니다. 실행할 조건이 여러개가 있으면 ELSE IF와 ELSE를 이용하여 처리를 할 수 있습니다. IF문을 사용하는 방법에 대해서 살펴보겠습니다. 


If condition [ Then ]

    [ statements ]

[ ElseIf elseifcondition [ Then ]

    [ elseifstatements ] ]

[ Else

    [ elsestatements ] ]

End If


IF 구문 뒤에는 항상 조건이 와야 합니다. IF문의 마지막은 End IF로 끝이납니다. 그리고 다른 조건을 달고 싶으면 ELSE IF와 ELSE를 통해서 해결을 할 수 있습니다. ELSE와 ELSE IF는 옵션입니다. 필요한 경우에만 달면 됩니다. 


그럼  IF문이 처리되는 과정을 한번 그림으로 살펴볼까요. IF의 식이 만족을 하면 명령문1을 실행합니다. 두번째 IF문이 만족을 한다면 명령문2를 실행합니다. 조건이 모두 만족하지 않는다면 명령문n을 실행합니다. 



위의 그림을 코드로 한번 구현해 보겠습니다. 각각의 명령문을 실행하기 위해서는 모든 조건을 달아줬습니다. 


Dim 식 As Integer

If 식 = 1 Then

'명령문 1 실행하기

ElseIf 식 = 2 Then 

'명령문 2 실행하기

Else

' 명령문 n 실행하기

End If


조건문을 한번 볼까요. '식 = 1'로 이루어져있습니다. 이 조건문의 의미는 식이라는 변수의 값이 1이면 참을 아니면 거짓을 나타냅니다.

따라서 식이 1이면 명령문 1을 실행하라, 2이면 명령문 2를 실행하라, 1과 2가 아닌 다른 수이면 명령문 n을 실행하라는 알고리즘을 위의 코드로 나타냈다고 보시면 됩니다. 


비교 연산자


변수와 값을 비교하기 =이라는 연산자를 사용했습니다.이를 우리는 비교연산자라고 부릅니다. 비교연산자는 두 개의 식(혹은 값)을 비교하여 서로 같은지 확인하고 같지 않을 경우의 결과를 리턴하는 연산자를 말합니다. VBA에는 <, <=, >, >=, =, <> 의 6개의 비교연산자가 있습니다. 


아래의 표를 보시면 알 수있지만, <>는 같지않음이라는 비교연산자입니다. 많은 언어에서 같이 않음을 !=로 사용을 하는데 VBA에서는 <>임을 명심하셔야 합니다. 



논리 연산자


그럼 IF 구문에서 두개의 비교를 동시에 하고 싶으면 어떻게 할까요?

두개의 비교 중 하나만 참이 나오면 IF 구문의 명령문을 실행할려고 한다면? 아니면 두개의 비교 모두 참일 때 IF 구문의 명령문을 실행할려고 한다면? 어떻게 해야 할까요? 이런 경우 개발자는 논리 연산자를 사용할 수 있습니다. 


논리연산자는 논리적부정(Not), 논리곱(And), 논리합(Or), 배타적 논리합(Xor)등이 있습니다. 모든 언어에서 False의 값은 0입니다. True의 값은 1이고요. 논리 연산자는 이러한 False와 True가 만나 다른 결과를 낼 때 사용이됩니다. 


  Operator

 설명 

 Not(논리적 부정)

 불리언의 값의 반대값을 반환(True -> False, False -> True)

 And(논리곱)

 두개의 불리언 값(True, False)이 두개 모두 참이면 참을 나머지의 경우 False를 반환

 Or(논리합)

 두개의 불리언 값(True, False)이 하나라도 참이면 True를, 둘다 거짓이면 False를 반환

 Xor(배타적 논리합)

 논리합의 반대의 경우 


논리적 연산자를 사용하는 방법에 대해서 알아보도록 하겠습니다.

만약 특정 점수가 80이상 이면서 100점 이하인 조건을 달고 싶다고 한다면 And 연산을 달아야 합니다. 두개의 조건 모두 만족해야 하기 때문이죠. 이를 코드로 나타내면 아래와 같이 나타낼 수 있습니다. 


Dim score as Integer

IF score >= 80 and score <= 100 Then

'특정 실행문 실행

End IF


OR의 경우도 한번 살펴볼까요. 만약 지역이 서울 혹은 부산이라면 특정 실행문을 실행해야하는 경우 OR을 써야합니다. 이를 코드로 나타내면 아래와 같습니다. 


Dim location as String

IF location = '서울' Or location = '부산' Then

'특정 실행문 실행

End IF


충분히 이해하셨나요? IF 구문과 비교, 논리연산자는 알고리즘 개발시 가장 많이 사용하게 됩니다. 이해가 어려우시면 방명록 혹은 댓글로 질문은 남기시면 상세히 설명을 드리도록 하겠습니다.


그럼 이만 줄이겠습니다.


이 글이 도움이 되셨나요? 그렇다면 아래의 그림을 클릭해주세요.



댓글