Die `Switch`-Funktion in VBA wird verwendet, um mehrere Bedingungen zu evaluieren und entsprechend Werte zurückzugeben. Sie ist besonders nützlich, wenn Sie mehrere `If…ElseIf`-Anweisungen ersetzen möchten und eine sauberere und übersichtlichere Syntax bevorzugen.
Hier ist eine grundlegende Anleitung, wie Sie die `Switch`-Funktion in VBA verwenden können:
Syntax der Switch-Funktion
Switch(Expression1, Value1, Expression2, Value2, ..., ExpressionN, ValueN)
- Expression1, Expression2, …, ExpressionN: Dies sind die verschiedenen Bedingungen, die Sie prüfen möchten.
- Value1, Value2, …, ValueN: Dies sind die Werte, die zurückgegeben werden, wenn die entsprechende Bedingung wahr ist.
Die `Switch`-Funktion prüft jede Bedingung in der Reihenfolge, in der sie angegeben ist, und gibt den Wert zurück, der der ersten wahren Bedingung entspricht.
Beispiel
Angenommen, Sie möchten die `Switch`-Funktion verwenden, um eine Bewertung basierend auf einer numerischen Punktzahl zu vergeben, könnten Sie das wie folgt tun:
Function Bewertung(punkte As Integer) As String
Bewertung = Switch( _
punkte >= 90, "Hervorragend", _
punkte >= 80, "Sehr gut", _
punkte >= 70, "Gut", _
punkte >= 60, "Befriedigend", _
punkte >= 50, "Ausreichend", _
Punkte < 50, "Ungenügend" _
)
End Function
Verwendung
Um die Funktion anzuwenden, könnten Sie sie in einem VBA-Modul folgendermaßen aufrufen:
Sub TesteBewertung()
Dim result As String
result = Bewertung(85)
MsgBox result ' Dies zeigt "Sehr gut" in einer Nachricht an.
End Sub
Wichtige Hinweise
- Die `Switch`-Funktion gibt den Wert zurück, der mit der ersten wahren Bedingung verknüpft ist. Wenn keine Bedingung wahr ist, gibt sie `Null` zurück.
- Stellen Sie sicher, dass die Bedingungen korrekt priorisiert sind, da die Evaluation von oben nach unten erfolgt. Wenn beispielsweise `punkte >= 60` vor `punkte >= 70` steht, wird eine Punktzahl von 75 fälschlicherweise als “Befriedigend” statt “Gut” bewertet.
Die `Switch`-Funktion kann sehr mächtig sein, wenn sie korrekt verwendet wird, um sauberen und lesbaren Code zu schreiben.