[엑셀] VBA구문에서
IF구문 사용법
오늘은 9월3일에 진행하는 장미희님의
엑셀 매크로 &VBA 과정에서 IF구문 사용방법에 대해서 알아보도록 하겠습니다.
(사용버전: 엑셀 2003)
VBA에서 조건문을 사용하여 판단하는 구문 중에서 IF문에 대해 알아봅니다.
프로시저에서 어떤 조건에 따라서 서로 다른 작업을 수행할 수가 있다. 조건문은 조건이 True인지 False인지를
평가하여 그 결과에 따라 하나 이상의 명령문을 실행하도록 지정합니다. 일반적으로 조건문에 사용되는 조건들은 비교
연산자나 논리연산자를 사용하여 값이나 변수를 다른 값이나 변수와 비교하는 식입니다.
If...Then...Else 문을 사용하면 조건 값에 따라 특정 명령문을 실행할 수
있습니다. If...Then...Else 문은 조건이 여러 개일 경우에 필요에 따라 여러 번 중첩해서 사용할 수
있고, 중첩해서 작성할 때 두 번째 If부터는 ElseIf로 입력합니다. If구문은 모두 4가지 형식을 사용합니다.
① If...Then...Else문의 흐름도
② If...Then...Else의 여러 가지 형식
[형식1] If 조건문 Then 명령문 [Else] 명령문 |
다음은 형식1로 작성한 예제로 거짓인 경우에 실행하는 Else 키워드가 생략되었습니다.
MyDate에 할당된 날짜를 2000년 1월 1일과 비교해서 MyDate가 더 크면 밀레니엄세대라는 메시지상자가
표시됩니다. 조건의 결과가 하나 밖에 없는 경우에 Else 문 없이 사용하고, Then 이후에 명령문이 한 행밖에
안되면 End If문도 생략해도 됩니다.
Sub FixDate()
Dim MyDate As Date
MyDate = #3/23/2001#
If MyDate > #1/1/2000# Then MsgBox "밀레니엄 세대이다."
End Sub |
[형식2]
If 조건문 Then
명령문
명령문
End If |
한 행 이상의 여러 행으로 된 구문을 사용하면 End If문을 사용합니다. 다음 예제와
같이 여러 행으로 된 구문에는 End If 문이 포함되는데 A1 셀의 글자 서식이 굵게가 지정되어 있으면 이
조건으로, 조건이 참이면 굵게를 해제하고 셀 무늬를 지정하라는 예제입니다. 프로시저를 실행하려면 A1 셀에 데이터를
입력하고 서식을 굵게 지정해두어야 실행결과를 알 수 있습니다.
Sub IfEndIf()
If Range("A1").Font.Bold = True Then
Range("A1").Font.Bold = False
Range("A1").Interior.ColorIndex = 6
End If
End Sub |
[형식2]
If 조건문 Then
명령문
명령문
End If |
[형식3]
If 조건문 Then
명령문
Else
명령문
End If |
If...Then...Else 문을 사용하면 조건문의 결과에 따라서 조건이 참인 경우와
거짓인 경우에 실행문을 각기 다르게 지정할 수 있습니다.
다음은 A1 셀에 입력된 데이터의 글꼴이 굵게 지정되어 있으면 해제하고, 굵게 지정되어 있지 않으면 데이터의 글꼴을
굵게 지정하는 경우로 A1 셀에 데이터를 입력하고 프로시저를 실행합니다.
Sub IfElseEndIf()
If Range("A1").Font.Bold = True Then
Range("A1").Font.Bold = False
Else
Range("A1").Font.Bold = True
End If
End Sub |
[형식4]
If 조건문 Then
명령문
[ElseIf 조건문 Then
명령문
Else
명령문]
End If |
If...Then...Else 문에 ElseIf 문을 덧붙이면 첫째 조건이 False일
때 둘째 조건을 검사하게 할 수 있습니다. ElseIf 문은 여러 개 지정할 수도 있고, 또는 하나도 지정하지 않을
수도 있는데 예를 들어 다음 프로시저는 점수에 따라서 학점을 표시하는 작업으로 Else 문 다음의 명령문은 모든
If 문과 ElseIf 문이 False일 때 실행이 됩니다.
Sub IfElseIf()
Dim Gr As Range
Set Gr = Range("a1")
If Gr >= 90 Then
Range("a2").Value = "A+"
ElseIf Gr >= 80 Then
Range("a2").Value = "B+"
ElseIf Gr >= 70 Then
Range("a2").Value = "C+"
Else
Range("a2").Value = "낙제"
End If
End Sub |
프로시저를 실행하려면 A1셀에 숫자 데이터가 입력되어 있어야 제대로 결과를 볼 수
있습니다.
※ 오늘의 엑셀
TIP은 "엑셀 매크로 &
VBA" 과정을 강의하시는 장미희 강사님이 제공해주신 내용입니다. 반복적이거나 복잡한 업무를 매크로와 VBA를 이용하여
자동화시킴으로써 업무의 효율성을 높이고 싶으신 회원님들의 많은 참여 바랍니다. (잔여좌석 : 18석)
|