VBA IIF

Excel VBA IIF

Als u de regelmatige gebruiker van VBA-macro's bent, moet u de functie "IIF" zijn tegengekomen, anders heeft u deze functie misschien op internet gezien. Op het eerste gezicht, want u moet hebben gedacht dat het een IF-voorwaarde is zoals onze reguliere IF-instructie in Excel. Maar dit is niet dezelfde IF-instructie die we gebruiken om logische tests te evalueren en tot resultaten te komen op basis van de criteria die we geven. In dit artikel nemen we u mee door de voorwaarde "VBA IIF" in VBA.

Wat doet de IIF-conditie in VBA?

Dit lijkt erg op onze IF-conditie, maar is iets anders van aard. De voorwaarde "VBA IIF" test de geleverde uitdrukking of logische test en retourneert TRUE of FALSE als resultaat.

VBA IIF-syntaxis

Bekijk de syntaxis van de IIF-functie.

  • Uitdrukking: dit is niets anders dan de logische test die we zouden willen uitvoeren.
  • Ture Part: Als de logische test WAAR is, wat zou dan het resultaat moeten zijn van het TRUE deel.
  • False Part: Als de logische test FALSE is, wat zou dan het resultaat moeten zijn van het FALSE part.

We kunnen onze eigen resultaten invoeren met TRUE & FALSE-onderdelen. Hoewel argumenten lijken op die van de IF-voorwaarde, zal dit enigszins verschillen. We zullen zien dat in de voorbeelden van Excel VBA IIF-functie.

Een van de belangrijkste verschillen tussen gewone "IF" en deze "IIF" is dat we de code kunnen terugbrengen tot een enkele regel met IIF, waar het met de IF-voorwaarde minimaal 5 regels nodig heeft om hetzelfde resultaat te krijgen.

Voorbeeld van VBA IIF-functie

Hieronder staan ​​de voorbeelden van VBA IIF-functie in Excel.

U kunt deze VBA IIF Excel-sjabloon hier downloaden - VBA IIF Excel-sjabloon

Voorbeeld # 1 - VBA IIF

Ok, we zullen een eenvoudig voorbeeld van de IIF-functie zien. Nu gaan we testen of een getal groter of kleiner is dan een ander getal. Volg de onderstaande stappen om de VBA-code te schrijven.

Stap 1: Start de macro.

Stap 2: definieer de variabele als String in VBA.

Code:

 Sub IIF_Example () Dim FinalResult As String End Sub 

Stap 3: Definieer nog twee variabelen als Long in VBA.

Code:

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

Stap 4: Wijs nu voor de variabele "Getal1" de waarde 105 toe en voor variabele "Getal2" de waarde van 100.

Code:

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

Stap 5: Nu zullen we voor de eerste gedefinieerde variabele “FinalResult” het resultaat van de IIF-functie toewijzen. Dus open de IIF voor de variabele.

Stap 6: Geef de uitdrukking op als Getal1> Getal2.

Stap 7: Als de uitdrukking WAAR is, wat zou het resultaat moeten zijn. Ik zal het resultaat toewijzen als "Nummer 1 is groter dan Nummer 2".

Stap 8: Als de uitdrukking ONWAAR is, wat zou het resultaat moeten zijn. Ik zal het resultaat toewijzen als "Nummer 1 is kleiner dan Nummer 2".

Nu is de variabele waarde een van de onderstaande.

Indien waar: "Nummer 1 is groter dan nummer 2"

Indien False: "Nummer 1 is kleiner dan nummer 2"

Stap 9: Laten we het resultaat weergeven in een berichtvenster in VBA.

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 is groter dan Number 2", "Number 1 is less than Number 2") MsgBox FinalResult End Sub 

Laten we nu de code uitvoeren en het resultaat zien.

Aangezien de waarde van nummer 1 105 is, wat groter is dan de waarde van nummer 2 van 100, krijgen we het resultaat als "Nummer 1 is groter dan nummer 2". Omdat de expressie TRUE is, heeft de IIF-voorwaarde dit resultaat geretourneerd.

Voorbeeld # 2 - IF vs IIF

U moet zich afvragen wat het verschil is tussen IF & IIF. Ja, er is een verschil in codering. Kijk bijvoorbeeld naar de ALS-voorwaardecode.

Code:

 Sub IIF_Example () Dim FinalResult As String Dim Number1 As Long Dim Number2 As Long Number1 = 105 Number2 = 100 If Number1> Number2 Then MsgBox "Nummer 1 is groter dan nummer 2" Else MsgBox "Nummer 1 is kleiner dan nummer 2" End If Einde Sub 

Met IF hebben we eerst een logische test toegepast.

 Als Nummer1> Nummer2 Dan 

Als de logische test waar is, hebben we het resultaat toegepast.

MsgBox "Nummer 1 is groter dan nummer 2"

Als de logische test niet waar is, hebben we de verschillende resultaten toegepast.

MsgBox "Nummer 1 is kleiner dan nummer 2"

Beide functies retourneren hetzelfde resultaat, maar met IIF kunnen we alleen op één regel coderen, waarbij de IF-instructie meerdere regels vereist.

Voorbeeld # 3 - VBA geneste IIF-voorwaarde

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.