VBA IIF

Excel VBA IIF

Se sei un utente abituale delle macro VBA, devi esserti imbattuto nella funzione chiamata "IIF" o potresti aver visto questa funzione su Internet. A prima vista, perché devi aver pensato che sia una condizione IF come la nostra normale istruzione IF in Excel. Ma questa non è la stessa istruzione IF che usiamo per valutare i test logici e ottenere risultati in base ai criteri che diamo. In questo articolo, ti guideremo attraverso la condizione "VBA IIF" in VBA.

Cosa fa la condizione IIF in VBA?

Questo è molto simile alla nostra condizione IF ma di natura leggermente diversa. La condizione "VBA IIF" verifica l'espressione fornita o il test logico e restituisce come risultato TRUE o FALSE.

Sintassi VBA IIF

Dai un'occhiata alla sintassi della funzione IIF.

  • Espressione: questo non è altro che il test logico che vorremmo condurre.
  • Parte Tura: se il test logico è VERO, quale dovrebbe essere il risultato della parte VERO.
  • Parte falsa: se il test logico è FALSO, quale dovrebbe essere il risultato della parte FALSE.

Possiamo inserire i nostri risultati con parti VERO e FALSO. Sebbene gli argomenti siano simili a quelli della condizione IF, questo sarà leggermente diverso. Lo vedremo negli esempi della funzione Excel VBA IIF.

Una delle differenze chiave tra "IF" regolare e questo "IIF" è che possiamo ridurre il codice a una singola riga con IIF dove con la condizione IF ci vogliono un minimo di 5 righe per ottenere lo stesso risultato.

Esempio di funzione VBA IIF

Di seguito sono riportati gli esempi della funzione VBA IIF in Excel.

Puoi scaricare questo modello Excel VBA IIF qui - Modello Excel VBA IIF

Esempio n. 1 - VBA IIF

Ok, vedremo un semplice esempio di funzione IIF. Ora testeremo se un numero è maggiore o minore di un altro numero. Segui i passaggi seguenti per scrivere il codice VBA.

Passaggio 1: avvia la macro.

Passaggio 2: definire la variabile come stringa in VBA.

Codice:

 Sub IIF_Example () Dim FinalResult As String End Sub 

Passaggio 3: definire altre due variabili come Long in VBA.

Codice:

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

Passaggio 4: Ora per la variabile "Numero1" assegnare il valore di 105 e per la variabile "Numero2" assegnare il valore di 100.

Codice:

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

Passo 5: Ora per la prima variabile definita “FinalResult” assegneremo il risultato della funzione IIF. Quindi apri l'IIF per la variabile.

Passaggio 6: fornire l'espressione come Numero1> Numero2.

Passaggio 7: ora se l'espressione è VERA, quale dovrebbe essere il risultato. Assegnerò il risultato come "Il numero 1 è maggiore del numero 2".

Passaggio 8: ora se l'espressione è FALSE quale dovrebbe essere il risultato. Assegnerò il risultato come "Il numero 1 è inferiore al numero 2".

Ora il valore della variabile sarà uno dei seguenti.

Se True: "Il numero 1 è maggiore del numero 2"

Se False: "Il numero 1 è minore del numero 2"

Passaggio 9: mostriamo il risultato in una finestra di messaggio in VBA.

Codice:

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

Ora eseguiamo il codice e vediamo il risultato.

Poiché il valore del numero 1 è 105 che è maggiore del valore del numero 2 di 100, abbiamo ottenuto il risultato come "il numero 1 è maggiore del numero 2". Poiché Expression è TRUE, la condizione IIF ha restituito questo risultato.

Esempio # 2 - IF vs IIF

Ti starai chiedendo qual è la differenza tra IF e IIF. Sì, c'è una differenza nella codifica. Ad esempio, guarda il codice della condizione IF.

Codice:

 Sub IIF_Example () Dim FinalResult As String Dim Number1 As Long Dim Number2 As Long Number1 = 105 Number2 = 100 If Number1> Number2 Then MsgBox "Number 1 is Greater than Number 2" Else MsgBox "Number 1 is less than Number 2" End If End Sub 

Usando IF prima abbiamo applicato un test logico.

 Se Numero1> Numero2 Allora 

Quindi, se il test logico è vero, abbiamo applicato il risultato.

MsgBox "Il numero 1 è maggiore del numero 2"

Quindi se il test logico è falso, abbiamo applicato i diversi risultati.

MsgBox "Il numero 1 è inferiore al numero 2"

Entrambe le funzioni restituiscono lo stesso risultato ma con IIF possiamo codificare solo in una singola riga, dove l'istruzione IF richiede più righe.

Esempio n. 3 - Condizione IIF annidata VBA

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.