![](https://codky.com/wp-content/uploads/2024/11/2551-1024x576.png)
Die Funktion `IIf` in VBA (Visual Basic for Applications) ist eine nützliche Funktion, um bedingte Ausdrücke zu evaluieren. Sie funktioniert ähnlich wie der `if-else`-Ausdruck in anderen Programmiersprachen, jedoch in einer kompakten Form. Die Syntax der `IIf`-Funktion ist wie folgt:
IIf(Ausdruck, WahrerTeil, FalscherTeil)
- Ausdruck: Dies ist der zu evaluierende Ausdruck. Er sollte einen booleschen Wert (True oder False) zurückgeben.
- WahrerTeil: Der Wert oder Ausdruck, der zurückgegeben wird, wenn der Ausdruck True ist.
- FalscherTeil: Der Wert oder Ausdruck, der zurückgegeben wird, wenn der Ausdruck False ist.
Beispiel
Stellen Sie sich vor, Sie haben eine Variable `x` und wollen prüfen, ob sie größer als 10 ist. Wenn das der Fall ist, soll der Wert `„Größer als 10“` zurückgegeben werden, andernfalls `„10 oder kleiner“`:
Sub TestIIf()
Dim x As Integer
x = 12
Dim Ergebnis As String
Ergebnis = IIf(x > 10, "Größer als 10", "10 oder kleiner")
MsgBox Ergebnis
End Sub
In diesem Beispiel wird die Variable `Ergebnis` abhängig vom Wert von `x` entweder „Größer als 10“ oder „10 oder kleiner“ zugewiesen und anschließend in einer Nachricht angezeigt.
Wichtige Hinweise
- Auswertung beider Zweige: Beachten Sie, dass sowohl der `WahrerTeil` als auch der `FalscherTeil` von `IIf` immer ausgewertet werden, unabhängig vom Ergebnis des Ausdrucks. Dies kann zu unerwarteten Fehlern führen, etwa wenn in einem der Zweige ein Code ist, der aufgrund von Teilbarkeit durch Null, falscher Typkonvertierung oder ähnlichen Fehlern nicht ausgeführt werden könnte.
- Performanz: In Fällen, in denen nur einer der beiden Ausdrücke (WahrerTeil oder FalscherTeil) schwerwiegende Berechnungen oder Funktionsaufrufe beinhaltet, ist es manchmal besser, eine herkömmliche `If … Then … Else`-Struktur zu verwenden, um unnötige Berechnungen zu vermeiden.
Die `IIf`-Funktion ist nützlich für einfache bedingte Zuweisungen, aber bei komplexeren Logikpfaden ist es oft besser, die Lesbarkeit durch ein vollständiges `If … Then … Else` zu bewahren.