Istruzione If…Then…Else…End If

Esegue in modo condizionale un gruppo di istruzioni, a seconda del valore di un'espressione.

Sintassi

If condition Then statements [Else elsestatements] In alternativa, è possibile utilizzare la sintassi per il formato a blocchi:

If condition Then
   [statements]
[ElseIf condition-n Then
   [elseifstatements]] . . .
[Else
   [elsestatements]]
End If

Argomenti:

  • Condition: un'espressione valida. Espressione numerica o stringa che restituisce True o False. Se la condizione è Null, la condizione viene considerata False.

  • Statements: una o più istruzioni separate da due punti; eseguite se la condizione è True.

  • condition-n: uguale all'argomento condition.

  • Elseifstatements: una o più istruzioni eseguite se l'argomento condition-n associato restituisce True.

  • Elsestatements: una o più istruzioni eseguite se nessuna espressione condition o condition-n precedente restituisce True.

Note

È possibile utilizzare il formato a riga singola (prima sintassi) per test brevi e semplici. Tuttavia, il formato a blocchi (seconda sintassi) fornisce un livello maggiore di strutturazione e flessibilità rispetto al formato a riga singola ed è in genere più semplice da leggere, gestire e sottoporre a debug. Anche se il formato a riga singola è supportato, è tuttavia consigliabile utilizzare il formato a blocchi.

Note:

La sintassi a riga singola è supportata ma non consigliata.

Con la sintassi a riga singola, è possibile eseguire più istruzioni come risultato di un'istruzione If...Then, ma le istruzioni devono essere tutte sulla stessa riga e separate da due punti, come nell'esempio seguente.

Dim A,B,C
A=11
If A > 10 Then A = A + 1 : B = B + A : C = C + B

Quando si esegue un blocco If (seconda sintassi), la condizione definita dall'argomento condition viene sottoposta a test. Se l'argomento condition restituisce True, vengono eseguite le istruzioni Then successive. Se l'argomento condition restituisce True, vengono eseguite le istruzioni False, ogni istruzione ElseIf (se presente) viene valutata in sequenza. Se viene rilevato un argomento condition che restituisce True, vengono eseguite le istruzioni successive all'istruzione Then associata. Se nessuna delle istruzioni ElseIf restituisce True o se non sono presenti clausole ElseIf, vengono eseguite le istruzioni successive a Else. Dopo aver eseguito le istruzioni successive a Then o Else, l'esecuzione continua con l'istruzione successiva a End If.

Le clausole Else e ElseIf sono entrambe facoltative. In un blocco If è possibile inserire il numero desiderato di istruzioni ElseIf, ma tale istruzione non può dopo la clausola Else. Le istruzioni If possono essere nidificate nei blocchi, ovvero contenute all'interno di altre istruzioni.

Gli elementi successivi alla parola chiave If vengono esaminati per determinare se un'istruzione è un blocco If. Se, sulla stessa riga, dopo Then appare qualcosa di diverso da un commento, l'istruzione verrà gestita come un'istruzione If a riga singola.

Un'istruzione in un blocco If deve essere la prima istruzione di una riga. Il blocco If deve terminare con un'istruzione End If.

Esempio: istruzioni condizionali

Istruzione If: esegue una sola istruzione quando una condizione restituisce true

Dim i, strVal
i=10
If i=10 Then strVal = "Hello"

Esegue più di un'istruzione se la condizione restituisce true; è necessario inserire ogni istruzione su righe separate e terminare l'istruzione con la parola chiave "End If":

Dim i, strVal
i=10
If i=10 Then
    If i=10 Then strVal = "Hello"
    i = i+1
End If

istruzione If...Then...Else: seleziona uno dei due set di righe da eseguire

Esegue un'istruzione se una condizione restituisce True ed esegue un'altra istruzione Else se la condizione non restituisce true; è necessario aggiungere la parola chiave "Else"

Dim i 
Dim strVal
i=5
If i=10 Then
    If i=10 Then strVal = "Hello"
    i = i+1
Else
    i= i+2
    strVal = "world"
End If

Istruzione If...Then...ElseIf …Else: seleziona uno dei numerosi set di righe da eseguire

Esegue un'istruzione se una condizione restituisce true e ne esegue un'altra se la prima condizione non restituisce true e l'altra condizione restituisce true. È necessario aggiungere la parola chiave ElseIf per tutte le condizioni aggiuntive seguite da Else:

Dim i
Dim strVal
i=14
If i=10 Then
    If i=10 Then strVal = "Hello"
    i = i+1
Elseif i=11 Then
    i= i+2
    strVal = "world"
Else
    i= i+3
    strVal = "world"
End If