Excel VBA IIF-Funktion

VBA IIF (auch als Immediate If bezeichnet) ist eine Anweisung, die Sie möglicherweise häufig beim Codieren unter VBA und beim Erstellen von Makros gesehen haben. Es ähnelt der IF-Funktion von Excel, bei der Sie eine logische Bedingung aufschreiben und zwei Ausgaben erhalten, wenn die Bedingung wahr und die Bedingung falsch ist. Wenn Sie es als eine ähnliche Funktion wie VBA IF betrachten, mit der wir logische Tests und Bedingungen auswerten, täuschen Sie sich. Es scheint in der Nähe von VBA zu sein Wenn und im Idealfall kann man sagen, dass sie während der Ausführung wirklich einen kleinen Unterschied zwischen ihnen haben. In diesem Artikel erfahren Sie mehr über die VBA IIF-Anweisung und deren Verwendung in unserem täglichen Programmieralltag, um unsere Aufgaben zu vereinfachen.

Die VBA IIF-Anweisung funktioniert ähnlich wie die Excel IF-Anweisung. Es prüft die angegebene Bedingung oder logische Anweisung und gibt eine Ausgabe aus, die entweder mit der Bedingung TRUE verknüpft ist oder wenn die Bedingung FALSE ist.

Syntax von IIF in Excel VBA

Die Syntax für die VBA IIF-Funktion in Excel lautet wie folgt:

Wo,

  • Ausdruck: ist die logische Bedingung, die wir unter IIF-Funktion auswerten wollten
  • TruePart: ist der Wert / Output, den wir erwarten, wenn die logische Bedingung / der logische Ausdruck TRUE ist.
  • FalsePart: ist der Wert / Output, den wir erwarten, wenn die logische Bedingung / der logische Ausdruck FALSE ist.

Wie benutze ich Excel VBA IIF?

Versuchen wir es jetzt mit einigen Beispielen für VBA IIF in Excel.

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

Nehmen wir ein einfaches Beispiel, um zu sehen, wie IIF unter Microsoft VBA funktioniert.

Beispiel # 1 - VBA IIF

Schritt 1: Öffnen Sie einen Visual Basic-Editor (VBE). Gehen Sie zur Registerkarte Einfügen und klicken Sie auf Modul . Es wird ein neues Modul unter VBE hinzugefügt.

Schritt 2: Definieren Sie eine neue Unterprozedur, die Ihr Makro in diesem Modul enthalten kann.

Code:

 Sub IIf_Ex1 () End Sub 

Schritt 3: Definieren Sie zwei neue Variablen Var_1 als Long und Result mit Datentyp als Variante.

Code:

 Sub IIf_Ex1 () Dim var_1 Solange Dim Ergebnis As Boolean End Sub 

Schritt 4: Weisen Sie Var_1 einen numerischen Wert zu, damit wir mit dieser Variablen die logische IIF-Bedingung überprüfen können.

Code:

 Sub IIf_Ex1 () Dim var_1 As Long Dim Ergebnis As Boolean var_1 = 5 End Sub 

Schritt 5: Verwenden Sie die Variable Result, um die logische IIF-Bedingung zu speichern, unter der überprüft werden soll, ob der Var_1 zugewiesene Wert größer oder gleich 10 ist.

Code:

 Sub IIf_Ex1 () Dim var_1 As Long Dim Ergebnis As Boolean var_1 = 5 Ergebnis = IIf (var_1> = 10, True, False) End Sub 

Schritt 6: Verwenden Sie jetzt Debug.Print, um das Ergebnis der IIF-Bedingung im Bereich der sofortigen Ergebnisanzeige zu drucken.

Code:

 Sub IIf_Ex1 () Dim var_1 As Long Dim Ergebnis As Boolean var_1 = 5 Ergebnis = IIf (var_1> = 10, True, False) Debug.Print Ergebnis End Sub 

Schritt 7: Führen Sie diesen Code aus, indem Sie oben im Bereich F5 oder die Schaltfläche Ausführen drücken, und sehen Sie die Ausgabe im Bereich Sofortige Ausgabe.

Beispiel # 2 - VBA IIF

Angenommen, wir haben Daten unter dem Arbeitsblatt wie folgt:

Alles was wir wollen ist eine Ausgabe unter Spalte B, so dass entweder die Zahl gerade oder ungerade ist.

Schritt 1: Definieren Sie eine neue Subprozedur unter VBE.

Code:

 Sub IIF_Ex2 () End Sub 

Schritt 2: Definieren Sie zwei Variablen "a" und "Numbers" als Long.

Code:

 Sub IIF_Ex2 () Dimme eine so lange Dimmzahl wie das lange Ende Sub 

Schritt 3: Starten Sie eine For-Schleife, in der alle in Zelle A2: A11 vorhandenen Werte in einer Schleife behandelt werden sollen. Die Schleife beginnt von 2 bis 11 (da wir in Zeile 1 Überschriften für die Spalten A und B haben).

Code:

 Sub IIF_Ex2 () Dimme eine so lange Dimmzahl wie lang für a = 2 bis 11 End Sub 

Schritt 4: Verwenden Sie die zuvor definierte Nummernvariable, um alle Nummern aus Spalte A zu speichern, die mit dem Zuweisungsoperator (A2: A11) im angegebenen Bereich variieren. Verwenden Sie dazu die folgende Codezeile.

Zahl = Sheet1.Range ("A" & a)

Code:

 Sub IIF_Ex2 () Dim a As Long Dim Number As Long For a = 2 To 11 Number = Sheet1.Range ("A" & a) End Sub 

Mit dieser Codezeile kann VBA alle Zeilen in Spalte A von "Sheet1" in Excel nacheinander unter der For-Schleife durchlaufen.

Schritt 5: Verwenden Sie IIF, um zu überprüfen, ob jeder Zellenwert gerade oder ungerade ist, und speichern Sie die Ergebnisse unter jeder Zelle in Spalte B. Die folgende Codezeile erledigt die Aufgabe für Sie.

Sheet1.Range ("B" & a) .Value = IIf (Nummer Mod 2 = 0, "Gerade", "Ungerade")

Code:

 Sub IIF_Ex2 () Dim a So lange Dim Number So lange For a = 2 To 11 Number = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a) .Value = IIf (Number Mod 2 = 0, "Gerade", "Ungerade") End Sub 

Hier in dieser Zeile möchten wir, dass die Ergebnisse unter jeder Zelle der Spalte B von Sheet1 gespeichert werden. Aus diesem Grund haben wir auf der linken Seite des Codeteils "Sheet1.Range (" B "& i) .Value" verwendet. Mit IIF haben wir überprüft, ob die Zahl mit Mod (Modulo-Operator unter VBA) durch 2 teilbar ist. Schließlich möchten wir in Spalte B ausgeben, ob die Zahl gerade oder ungerade ist. Daher werden diese beiden Werte unter der IIF-Anweisung erwähnt.

Schritt 6: Schließen Sie die For-Schleife mit der Next- Anweisung, sodass das System nach jeder Iteration zur nächsten Zelle im Arbeitsblatt wechselt, bis die 11. Zeile erreicht ist.

Code:

 Sub IIF_Ex2 () Dim a So lange Dim Number So lange For a = 2 To 11 Number = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a) .Value = IIf (Number Mod 2 = 0, "Gerade", "Ungerade") Next End Sub 

Schritt 7: Das ist es. Führen Sie diesen Code aus, indem Sie F5 oder die Schaltfläche Ausführen im obersten Bereich von VBE drücken. Sobald Sie diesen Makro ausgeführt haben, sehen Sie eine Ausgabe wie folgt unter Sheet1 (mit dem Namen "Example_1") der Excel-Arbeitsmappe.

Beispiel # 3 - VBA IIF

Wir werden jetzt eine verschachtelte IIF-Anweisung sehen:

Auf diese Weise verschachteln wir mehrere IF-Bedingungen in einer einzigen Schleife.

Nehmen wir die gleichen Daten wie im vorherigen Fall an. Wir wollten nur einen Code schreiben, mit dem wir Zahlen wie folgt unterscheiden können:

  • Wenn die Zahl zwischen 1 und 3 liegt (3 enthalten), sollte in Spalte B „Klein“ angegeben werden.
  • Wenn die Zahl zwischen 4 und 6 liegt (einschließlich 6), sollte in Spalte B "Mittel" angegeben werden.
  • Wenn die Zahl zwischen 7 und 10 liegt (10 enthalten), sollte in Spalte B "Groß" angegeben werden.

Schreiben wir einen Code für diesen IIF-Typ:

Schritt 1: Definieren Sie eine neue Unterprozedur unter Ihrer VBE, die Ihr Makro enthalten kann.

Code:

 Sub NestedIf () End Sub 

Führen Sie die Schritte 2 bis 4 wie im obigen Beispiel aus (Beispiel 2 in diesem Artikel). Es umfasst das Definieren von Variablen und das Hinzufügen aller in Spalte A vorhandenen Zahlen unter einer For-Schleife.

Schritt 5: Verwenden Sie den folgenden Code, um die gewünschte Ausgabe zu erhalten.

Code:

 Sub NestedIf () Dim Number As Long für a = 2 bis 11 Number = Sheet2.Range ("A" und a) Sheet2.Range ("B" und a) .Value = IIf (Number = 7, "Large", " Mittel ")) End Sub 

Schritt 6: Schließen Sie die For-Schleife mit der Next-Anweisung und führen Sie diesen Code mit der F5- oder Run-Taste aus, die sich im oberen Menüband unter VBE befindet. Sobald Sie den Code ausgeführt haben, sehen Sie die Ausgabe wie folgt:

In diesem Code wird die verschachtelte IIF verwendet. Unter dem ersten IIF wird angegeben, was in Spalte B gedruckt werden soll, wenn die Zahlen zwischen 1 und 3 liegen. Unter dem zweiten IIF wird angegeben, was in Spalte B gedruckt werden soll, wenn die Zahlen größer oder gleich 7 sind und unter dem Gleiches IIF, wir haben angegeben, was unter Spalte B gedruckt werden soll, wenn die Zahlen nicht zwischen 1 bis 3 und 7 bis 10 liegen.

Auf diese Weise können wir mehrere IIFs unter demselben Code hinzufügen und sie verschachteln. Dies ist es aus diesem Artikel. Lassen Sie uns die Sache mit ein paar Dingen abschließen, an die man sich erinnern muss.

Dinge, an die man sich erinnern sollte

  • IIF wertet immer beide Teile (TRUE und FALSE) für eine bestimmte Bedingung aus. Es wird jedoch nur der Teil FALSE gedruckt, wenn nichts WAHR ist.
  • Das Schreiben ist kürzer als bei Standard-If-Else-Anweisungen.
  • Es ist nicht gut bekannt, daher verstehen einige Benutzer Ihren Code möglicherweise nicht, wenn Sie IIF anstelle von konventionellem If-Else verwendet haben.

Empfohlene Artikel

Dies ist eine Anleitung zu VBA IIF. Hier diskutieren wir die Verwendung von Excel VBA IIF zusammen mit praktischen Beispielen und einer herunterladbaren Excel-Vorlage. Sie können auch unsere anderen Artikelvorschläge durchgehen -

  1. Arbeiten mit VBA Active Cell
  2. Zeile in VBA löschen
  3. Wie verwende ich Excel VBA Transpose?
  4. Wie 1004 Fehler mit VBA zu beheben

Kategorie: