VBA – Mehrfache (verschachtelte) If-Anweisungen
In this Article
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
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.
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
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