VBA 중첩된 If문 사용하기

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Younjung Kim

Last updated on 5월 6, 2023

이 튜토리얼에서는 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

 

vba-free-addin

VBA 코드 예시 추가 기능

본 웹사이트에 있는 모든 코드 예시에 쉽게 접근해보세요.

메뉴로 이동하여 클릭만 하면 코드는 모듈에 바로 입력됩니다. .xlam 추가 기능.

(설치가 필요 없습니다!)

무료 다운로드

VBA 코드 예시로 돌아가기