VBA IIF

Excel VBA IIF

Om du är den vanliga användaren av VBA-makron måste du ha stött på funktionen ”IIF” eller så har du kanske sett den här funktionen på internet. Vid första anblicken, för du måste ha trott att det är ett IF-tillstånd som vårt vanliga IF-uttalande i Excel. Men detta är inte samma IF-uttalande som vi använder för att utvärdera logiska tester och nå resultat baserat på de kriterier vi ger. I den här artikeln tar vi dig igenom "VBA IIF" -villkoret i VBA.

Vad gör IIF-tillstånd i VBA?

Detta liknar mycket vårt IF-tillstånd, men något annorlunda. "VBA IIF" -test testar det angivna uttrycket eller det logiska testet och returnerar antingen SANT eller FALSK som resultat.

VBA IIF Syntax

Titta på syntaxen för IIF-funktionen.

  • Uttryck: Detta är inget annat än det logiska testet vi vill göra.
  • Ture-del: Om det logiska testet är SANT, vad ska resultatet av den Sanna delen vara.
  • Falsk del: Om det logiska testet är FALSE, vad ska då vara resultatet av FALSE-delen.

Vi kan skriva in våra egna resultat med Sanna och falska delar. Även om argumenten liknar det för IF-tillståndet kommer det att vara något annorlunda. Vi kommer att se det i exemplen på Excel VBA IIF-funktionen.

En av de viktigaste skillnaderna mellan vanlig "IF" och denna "IIF" är att vi kan reducera koden till en enda rad med IIF där det med IF-tillstånd tar minst 5 rader för att nå samma resultat.

Exempel på VBA IIF-funktion

Nedan följer exemplen på VBA IIF-funktionen i Excel.

Du kan ladda ner denna VBA IIF Excel-mall här - VBA IIF Excel-mall

Exempel # 1 - VBA IIF

Ok, vi ser ett enkelt exempel på IIF-funktion. Nu ska vi testa om ett nummer är större än eller mindre än till ett annat nummer. Följ stegen nedan för att skriva VBA-koden.

Steg 1: Starta makrot.

Steg 2: Definiera variabeln som sträng i VBA.

Koda:

 Sub IIF_Example () Dim FinalResult som strängens slut sub 

Steg 3: Definiera ytterligare två variabler som Lång i VBA.

Koda:

 Sub IIF_Example () Dim FinalResult Som sträng Dim Number1 Som Long Dim Number2 Som Long End Sub 

Steg 4: Tilldela nu värdet 105 för variabeln "Number1" och för variabel "Number2" tilldela värdet 100.

Koda:

 Sub IIF_Exempel () Dim FinalResult Som sträng Dim Number1 Som Long Dim Number2 Som Long Number1 = 105 Number2 = 100 End Sub 

Steg 5: För den första definierade variabeln "FinalResult" tilldelar vi resultatet av IIF-funktionen. Så öppna IIF för variabeln.

Steg 6: Ange uttrycket som Number1> Number2.

Steg 7: Om uttrycket nu är SANT, vad ska resultatet bli. Jag kommer att tilldela resultatet som "Nummer 1 är större än nummer 2".

Steg 8: Om uttrycket nu är FALSK, vad ska resultatet bli. Jag kommer att tilldela resultatet som "Nummer 1 är mindre än nummer 2".

Nu kommer variabelvärdet att vara något av nedanstående.

Om det är sant: "Nummer 1 är större än nummer 2"

If False: “Number 1 is less than Number 2”

Steg 9: Låt oss visa resultatet i en meddelandefält i VBA.

Koda:

 Sub IIF_Exempel () Dim slutresultat som sträng dim nummer1 så långt dim nummer2 så långt nummer1 = 105 nummer2 = 100 slutresultat = IIf (nummer1> nummer2, "nummer 1 är större än nummer 2", "nummer 1 är mindre än nummer 2") MsgBox FinalResult End Sub 

Låt oss nu köra koden och se resultatet.

Eftersom Nummer 1-värdet är 105 vilket är större än Nummer 2-värdet på 100 fick vi resultatet som "Nummer 1 är större än nummer 2". Eftersom uttrycket är SANT returnerade IIF-tillståndet detta resultat.

Exempel # 2 - IF vs IIF

Du måste undra vad skillnaden mellan IF & IIF är. Ja, det är skillnad i kodning. Titta till exempel på villkorskoden IF.

Koda:

 Sub IIF_Exempel () Dim slutresultat som sträng Dimnummer1 Så långt dimnummer2 Så långt nummer1 = 105 Nummer2 = 100 Om nummer1> Nummer2 Då är MsgBox "Nummer 1 större än nummer 2" Annars MsgBox "Nummer 1 är mindre än nummer 2" Slut om Avsluta sub 

Med IF först har vi tillämpat ett logiskt test.

 Om Number1> Number2 Then 

Sedan, om det logiska testet är sant, har vi tillämpat resultatet.

MsgBox "Nummer 1 är större än nummer 2"

Sedan, om det logiska testet är falskt, har vi använt de olika resultaten.

MsgBox "Nummer 1 är mindre än nummer 2"

Båda funktionerna ger samma resultat men med IIF kan vi bara koda i en enda rad, där IF-satsen kräver flera rader.

Exempel # 3 - VBA Nested IIF-tillstånd

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.