VBA IIF

Excel VBA IIF

Wenn Sie regelmäßig VBA-Makros verwenden, müssen Sie auf die Funktion „IIF“ gestoßen sein, oder Sie haben diese Funktion möglicherweise im Internet gesehen. Auf den ersten Blick müssen Sie gedacht haben, dass es sich um eine IF-Bedingung wie unsere reguläre IF-Anweisung in Excel handelt. Dies ist jedoch nicht dieselbe IF-Anweisung, die wir verwenden, um logische Tests zu bewerten und Ergebnisse basierend auf den von uns angegebenen Kriterien zu erhalten. In diesem Artikel werden wir Sie durch die Bedingung "VBA IIF" in VBA führen.

Was macht die IIF-Bedingung in VBA?

Dies ist unserem IF-Zustand sehr ähnlich, unterscheidet sich jedoch geringfügig. Die Bedingung "VBA IIF" testet den angegebenen Ausdruck oder den logischen Test und gibt als Ergebnis entweder TRUE oder FALSE zurück.

VBA IIF-Syntax

Schauen Sie sich die Syntax der IIF-Funktion an.

  • Ausdruck: Dies ist nichts anderes als der logische Test, den wir durchführen möchten.
  • Ture-Teil: Wenn der logische Test WAHR ist, was sollte dann das Ergebnis des WAHREN Teils sein?
  • Falscher Teil: Wenn der logische Test FALSE ist, was sollte das Ergebnis des FALSE-Teils sein?

Wir können unsere eigenen Ergebnisse mit TRUE & FALSE-Teilen eingeben. Obwohl die Argumente denen der IF-Bedingung ähnlich sehen, wird dies etwas anders sein. Wir werden das in den Beispielen der Excel VBA IIF-Funktion sehen.

Einer der Hauptunterschiede zwischen regulärem "IF" und diesem "IIF" besteht darin, dass wir den Code mit IIF auf eine einzelne Zeile reduzieren können, wobei unter IF-Bedingung mindestens 5 Zeilen erforderlich sind, um das gleiche Ergebnis zu erzielen.

Beispiel einer VBA IIF-Funktion

Nachfolgend finden Sie Beispiele für die VBA IIF-Funktion in Excel.

Sie können diese VBA IIF Excel-Vorlage hier herunterladen - VBA IIF Excel-Vorlage

Beispiel 1 - VBA IIF

Ok, wir werden ein einfaches Beispiel für die IIF-Funktion sehen. Jetzt werden wir testen, ob eine Zahl größer oder kleiner als eine andere Zahl ist. Führen Sie die folgenden Schritte aus, um den VBA-Code zu schreiben.

Schritt 1: Starten Sie das Makro.

Schritt 2: Definieren Sie die Variable als String in VBA.

Code:

 Sub IIF_Example () Dim FinalResult As String End Sub 

Schritt 3: Definieren Sie zwei weitere Variablen als Long in VBA.

Code:

 Sub IIF_Example () Dim FinalResult As String Dim Number1 As Long Dim Number2 As Long End Sub 

Schritt 4: Weisen Sie nun für die Variable "Number1" den Wert 105 und für die Variable "Number2" den Wert 100 zu.

Code:

 Sub IIF_Example () Dim FinalResult As String Dim Number1 As Long Dim Number2 As Long Number1 = 105 Number2 = 100 End Sub 

Schritt 5: Nun weisen wir für die erste definierte Variable "FinalResult" das Ergebnis der IIF-Funktion zu. Öffnen Sie also die IIF für die Variable.

Schritt 6: Geben Sie den Ausdruck als Nummer1> Nummer2 ein.

Schritt 7: Wenn der Ausdruck nun WAHR ist, was sollte das Ergebnis sein? Ich werde das Ergebnis als "Nummer 1 ist größer als Nummer 2" zuweisen.

Schritt 8: Wenn der Ausdruck nun FALSE ist, was soll das Ergebnis sein? Ich werde das Ergebnis als "Nummer 1 ist kleiner als Nummer 2" zuweisen.

Jetzt ist der Variablenwert einer der folgenden.

Wenn wahr: "Nummer 1 ist größer als Nummer 2"

Wenn falsch: "Nummer 1 ist kleiner als Nummer 2"

Schritt 9: Lassen Sie uns das Ergebnis in einem Meldungsfeld in VBA anzeigen.

Code:

 Sub IIF_Example () Dim FinalResult As String Dim Number1 As Long Dim Number2 As Long Number1 = 105 Number2 = 100 FinalResult = IIf (Number1> Number2, "Number 1 ist größer als Number 2", "Number 1 ist kleiner als Number 2") MsgBox FinalResult End Sub 

Lassen Sie uns nun den Code ausführen und das Ergebnis sehen.

Da der Wert von Nummer 1 105 ist, was größer als der Wert von Nummer 2 von 100 ist, haben wir das Ergebnis als "Nummer 1 ist größer als Nummer 2" erhalten. Da der Ausdruck TRUE ist, hat die IIF-Bedingung dieses Ergebnis zurückgegeben.

Beispiel 2 - IF gegen IIF

Sie müssen sich fragen, was der Unterschied zwischen IF und IIF ist. Ja, es gibt einen Unterschied in der Codierung. Schauen Sie sich zum Beispiel den IF-Bedingungscode an.

Code:

 Sub IIF_Example () Dim FinalResult As String Dim Number1 As Long Dim Number2 As Long Number1 = 105 Number2 = 100 Wenn Number1> Number2, dann ist MsgBox "Nummer 1 größer als Nummer 2" Sonst MsgBox "Nummer 1 ist kleiner als Nummer 2" End If End Sub 

Mit IF zuerst haben wir einen logischen Test angewendet.

 Wenn Nummer1> Nummer2 Dann 

Wenn der logische Test wahr ist, haben wir das Ergebnis angewendet.

MsgBox "Nummer 1 ist größer als Nummer 2"

Wenn der logische Test falsch ist, haben wir die verschiedenen Ergebnisse angewendet.

MsgBox "Nummer 1 ist kleiner als Nummer 2"

Beide Funktionen geben das gleiche Ergebnis zurück, aber mit IIF können wir nur in einer einzigen Zeile codieren, wobei die IF-Anweisung mehrere Zeilen erfordert.

Beispiel 3 - VBA-verschachtelte IIF-Bedingung

Like how we use nested IF to test multiple conditions similarly we can use multiple IIF as well. Take a look at the below code.

Code:

 Sub IIF_Example2() Dim FinalResult As String Dim Marks As Long Marks = 98 FinalResult = IIf(Marks > 90, "Dist", IIf(Marks > 80, "First", IIf(Marks > 70, "Second", IIf(Marks > 60, "Third", "Fail")))) MsgBox FinalResult End Sub 

The above IIF condition tests five logical tests and returns the result accordingly.