VBA – Mehrfache (verschachtelte) If-Anweisungen

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on August 16, 2022

Dieses Tutorial zeigt Ihnen, wie Sie verschachtelte If-Anweisungen in VBA verwenden können.

Mit If-Anweisungen können Sie eine einzelne Bedingung in VBA testen, um festzustellen, ob diese wahr oder falsch ist. Je nach Antwort bewegt sich der Code dann in Richtung der WAHR- oder der FALSCH-Anweisung.

Eine einzelne IF-Anweisung

Sub IfTesten()
   Dim x as Integer
   x = 10
   If x = 10 Then
'Wenn x gleich 10 ist, ist die Bedingung WAHR
      MsgBox "x ist gleich 10"
   Else
'Wenn x nicht gleich 10 ist, ist die Bedingung FALSCH
      Msgbox "x ist nicht gleich 10"
   End If
End Sub

Verschachtelte IF-Anweisungen erklärt

Mit einer verschachtelten If-Anweisung können Sie mehrere Bedingungen INNERHALB der einzelnen WAHR- und/oder FALSCH-Anweisungen der ursprünglichen If-Anweisung einfügen.

Sub VerschachtelteIfTesten()
Dim x as Integer
Dim y as Integer
Dim z as Integer
x = 10
y = 9
z = 8
If x = 10 Then
'Wenn x gleich 10 ist, ist die Bedingung erfüllt, also prüfe y
   If y = 9 Then
       MsgBox "y ist gleich 9"
   Else
'Wenn y nicht gleich 9 ist, ist die Bedingung nicht erfüllt
       Msgbox "y ist nicht gleich 9"
   End If 
Else
'Wenn x nicht gleich 10 ist, ist die Bedingung nicht erfüllt, also prüfe z
   If z = 8 Then 
      MsgBox "z ist gleich 8" 
   Else 
'Wenn z nicht gleich 8 ist, ist die Bedingung nicht erfüllt
      Msgbox "z ist nicht gleich 8" 
   End If 
'Ein weiteres End If ist erforderlich, um das ursprüngliche If zu schließen
End If
End Sub

Das Einziehen Ihres Codes beim Schreiben ist immer eine gute Praxis, da es den Code leicht lesbar und nachvollziehbar macht, wenn Sie zu einem späteren Zeitpunkt darauf zurückkommen oder ein anderer Programmierer ihn lesen muss.

Wir könnten auch eine benutzerdefinierte Funktion (BDF) erstellen und die Werte einiger Zellen aus Excel über Parameter in diese Funktion einlesen.

Function IfErhalten(x as Integer, y as Integer, z as Integer) as String
   Wenn x = 10 Then 
'Wenn x gleich 10 ist, ist die Bedingung erfüllt, also prüfe y 
      If y = 9 Then
         IfErhalten = "y ist gleich 9" 
      Else 
'Wenn y nicht gleich 9 ist, ist die Bedingung nicht erfüllt
         IfErhalten = "y ist nicht gleich 9" 
      End If
   Else 
'Wenn x nicht gleich 10 ist, ist die Bedingung nicht erfüllt, also prüfe z 
      If z = 8 Then
           IfErhalten = "z ist gleich 8"
      Else 
'Wenn z nicht gleich 8 ist, ist die Bedingung nicht erfüllt
         IfErhalten = "z ist nicht gleich 8" 
      End If
'Ein weiteres End If ist erforderlich, um das ursprüngliche If zu schließen 
End If
End Function

vba verschachtelte if anweisungen

Verschachtelte IF-Anweisung – Praxisbeispiel

Betrachten Sie die folgende Funktion:

Function RabattErhalten(dblPreis As Double) As Double
   If dblPreis >= 1000 Then
'Wenn der Preis größer als 1000 ist, wird ein Rabatt zugewiesen
      If dblPreis >= 2000 Then
'wenn der Preis größer als 2000 ist, wird ein Rabatt von 10% gewährt
         RabattErhalten = dblPreis * 0.1
      Else
'Andernfalls 5% Rabatt gewähren
         RabattErhalten = dblPreis * 0.05
      End If
'Wenn der Preis nicht größer als 1000 ist
   Else
'Wenn der Preis größer als 500 ist, 2,5% Rabatt gewähren
      If dblPreis >= 500 Then
          RabattErhalten = dblPreis * 0.025
      Else
'Sonst kein Rabatt
         RabattErhalten = 0
      End If
'Ein weiteres End If ist erforderlich, um das ursprüngliche If zu schließen
End If
End Function

Mit dieser Funktion können wir in einem Excel-Blatt den Gesamtpreis für eine Bestellung ermitteln und je nach Gesamtvolumen verschiedene Rabatte anwenden.

verschachtelte if anweisungen rabattfunktion

 

ElseIf verwenden

ElseIf ermöglicht es, den Code zu vereinfachen, da sie zur zweiten if-Anweisung nur dann übergeht, wenn die erste FALSE zurückgibt.

Function RabattErhalten(dblPreis As Double) As Double
'ElseIf verwenden, um weniger Code schreiben zu müssen
   If dblPreis >= 2000 Then
      RabattErhalten = dblPreis * 0.1
   ElseIf dblPreis >= 1000 Then
      RabattErhalten = dblPreis * 0.075
   ElseIf dblPreis >= 500 Then
      RabattErhalten = dblPreis * 0.05
   ElseIf dblPreis >= 200 Then
      RabattErhalten = dblPreis * 0.025
   ElseIf dblPreis >= 100 Then
      RabattErhalten = dblPreis * 0.01
   Else
      RabattErhalten = 0
End If
End Function

vba elseif anweisungen rabattfunktion

 

Verwendung einer Case-Anweisung

Wir können auch eine Case-Anweisung verwenden, um denselben Effekt zu erzielen.

Function RabattErhalten(dblPrice As Double) As Double
   Select Case dblPreis
'Diese Case-Anweisung hat 6 verschiedene Rabattstufen
   Case Is >= 2000
      RabattErhalten = dblPreis * 0.1
   Case Is >= 1000
      RabattErhalten = dblPreis * 0.075
   Case Is >= 500
      RabattErhalten = dblPreis * 0.05
   Case Is >= 200
      RabattErhalten = dblPreis * 0.025
   Case Is >= 100
      RabattErhalten = dblPreis * 0.01
   Case Else
      RabattErhalten = 0
   End Select
End Function

vba case anweisungen rabattfunktion

vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples