VBA 중첩된 If문 사용하기
이 튜토리얼에서는 VBA에서 중첩된 If 문을 사용하는 방법을 보여드립니다.
If statements allow you to test for a single condition in VBA to see if the condition is True or False, and depending on the answer, the code will move in the direction of the true statement or the false statement.If 문을 사용하면 VBA에서 단일 조건을 테스트하여 조건이 참인지 거짓인지 확인할 수 있으며, 대답에 따라 코드가 참 문 또는 거짓 문 방향으로 이동합니다.
단일 IF 문
Sub TestIf
Dim x as Integer
x = 10
If x = 10 then
'x가 10이면 조건은 참 입니다
MsgBox x는 10입니다"
Else
'x가 10이 아니면 조건은 거짓 입니다
Msgbox "x는 10이 아닙니다"
End If
End Sub
중첩된 IF 문Nested IFs Explained
중첩된 If문을 사용하면 원래 If 문의 각 True 또는 False 문 안에 여러 조건을 넣을 수 있습니다.
Sub TestNestedIf()
Dim x as Integer
Dim y as Integer
Dim z as Integer
x = 10
y = 9
z = 8
If x = 10 Then
'x가 10이면 조건은 True가 되고 y에 대해 테스트합니다
If y = 9 Then
MsgBox "y는 9입니다"
Else
'y가 9가 아니면 조건은 False입니다
Msgbox "y is not 9"
End If
Else
'x가 10이 아니면 조건은 False가 되고 z에 대해 테스트합니다
If z = 8 Then
MsgBox "z는 8 입니다"
Else
'z가 8이 아니면 조건은 False입니다
Msgbox "z는 8이 아닙니다"
End If
'중첩된 If문을 닫기 위해 End If가 한개 더 필요합니다.
End If
End Sub
나중에 코드를 다시 읽어야 할 때나 다른 프로그래머가 코드를 읽어야 할 때 코드를 쉽게 읽고 따라갈 수 있도록 하기 위해 코드를 작성할 때 들여쓰기를 하는 것이 좋습니다.
사용자 정의 함수(UDF)를 만들고 매개 변수를 사용하여 Excel에서 일부 셀의 값을 함수로 호출할 수도 있습니다.
Function GetIf(x as Integer, y as Integer, z as Integer) as String
If x = 10 Then
'x가 10이면 조건은 True이고 y에 대해 테스트합니다
If y = 9 Then
GetIf= "y는 9 입니다"
Else
'y가 9가 아니면 조건은 False입니다
GetIf="y는 9가 아닙니다"
End If
Else
'x가 10이 아니면 조건은 False이고 z에 대해 테스트합니다
If z = 8 then
GetIf="z는 8입니다"
Else
'z가 8이 아니면 조건은 False입니다
GetIf="z는 8이 아닙니다"
End If
'중첩된 If문을 닫기 위해 End If가 한개 더 필요합니다.
End If
End Function
중첩된 If문 실전 예제
다음 함수를 살펴보겠습니다:
Function GetDiscount(dblPrice As Double) As Double
If dblPrice >= 1000 Then
'가격이 1000보다 크면 할인합니다
If dblPrice >= 2000 Then
'가격이 2000보다 크면 10% 할인합니다
GetDiscount = dblPrice * 0.1
Else
'그렇지 않으면 5% 할인합니다
GetDiscount = dblPrice * 0.05
End If
'가격이 1000보다 작을 경우 아래 구문을 실행합니다
Else
'500 이상이면 2.5% 할인합니다
If dblPrice >= 500 Then
GetDiscount = dblPrice * 0.025
Else
'그렇지 않으면 할인하지 않습니다
GetDiscount = 0
End If
'중첩된 If문을 닫기 위해 End If가 한개 더 필요합니다.
End If
End Function
Excel 시트에서 이 함수를 사용하면 주문의 총 가격을 확인하고 총액에 따라 다른 할인을 적용하는 테스트를 수행할 수 있습니다.
ElseIf 사용하기
ElseIf를 사용하면 첫 번째 if 문이 false를 반환하는 경우에만 두 번째 if 문으로 이동하므로 코드를 간소화할 수 있습니다.
Function GetDiscount(dblPrice As Double) As Double
'ElseIf문을 사용하여 코드를 간결하게 작성합니다
If dblPrice >= 2000 Then
GetDiscount = dblPrice * 0.1
ElseIf dblPrice >= 1000 Then
GetDiscount = dblPrice * 0.075
ElseIf dblPrice >= 500 Then
GetDiscount = dblPrice * 0.05
ElseIf dblPrice >= 200 Then
GetDiscount = dblPrice * 0.025
ElseIf dblPrice >= 100 Then
GetDiscount = dblPrice * 0.01
Else
GetDiscount = 0
End If
End Function
Case 문 사용하기
ElseIf문을 사용하는 대신 Case 문을 사용할 수도 있습니다.We can also use a Case Statement to achieve the same effect.
Function GetDiscount(dblPrice As Double) As Double
Select Case dblPrice
'이 코드에서 Case문은 6개의 다른 할인율을 제공합니다
Case Is >= 2000
GetDiscount = dblPrice * 0.1
Case Is >= 1000
GetDiscount = dblPrice * 0.075
Case Is >= 500
GetDiscount = dblPrice * 0.05
Case Is >= 200
GetDiscount = dblPrice * 0.025
Case Is >= 100
GetDiscount = dblPrice * 0.01
Case Else
GetDiscount = 0
End Select
End Function