Istruzione If...Then...Else


Consente l'esecuzione condizionale di un gruppo diistruzioni in base al valore di un'espressione.

Sintassi

If condizione Then [istruzioni] [Else istruzionielse]

In alternativa, è possibile utilizzare la seguente sintassi a blocchi:

If condizione Then
[istruzioni]

[ElseIf condizione-n Then
[istruzionielseif] ...

[Else
[istruzionielse]]

End If

La sintassi dell’istruzione If...Then...Else è composta dalle seguenti parti

Parte Descrizione
condizione Obbligatoria. Uno o più dei due tipi di espressione indicati di seguito:
Un’espressione numerica o un’espressione stringa che può dare come risultato True o False. Se condizione èNull, viene considerata come False.
Un’espressione nella forma TypeOf nomeoggetto Is tipooggetto. L’argomento nomeoggetto è qualsiasi riferimento di oggetto e tipooggetto è qualsiasi tipo di oggetto valido. L'espressione dà come risultato True se nomeoggetto è deltipo di oggetto specificato da tipooggetto; in caso contrario il risultato è False.
istruzioni Facoltativa nella sintassi a blocchi; Obbligatoria nella sintassi a riga singola, che non prevede una proposizione Else. Una o più istruzioni separate da due punti, eseguite se la valutazione di condizione dà come risultato True.
condizione-n Facoltativa. Come condizione.
istruzionielseif Facoltativa. Una o più istruzioni eseguite se la valutazione della condizione-n associata dà come risultato True.
istruzionielse Facoltativa. Una o più istruzioni eseguite se la valutazione di nessuna espressione condizione o condizione-n precedente dà come risultato True.


Osservazioni

La forma su una sola riga (prima sintassi) è utile per eseguire brevi e semplici test. La forma a blocco (seconda sintassi) consente una maggiore strutturazione e flessibilità rispetto alla forma su una sola riga e in genere facilita la lettura, il controllo e il debug.

Nota La sintassi su una sola riga consente di eseguire istruzioni multiple come risultato di una decisione If...Then. Le istruzioni devono comunque essere incluse nella stessa riga e separate da due punti come nell'istruzione di seguito riportata:

If A > 10 Then A = A + 1 : B = B + A : C = C + B

Un'istruzione If in forma di blocco deve essere la prima istruzione di una riga. Le parti Else, ElseIf e End If dell’istruzione possono essere precedute soltanto da unnumero di riga o da un’etichetta di riga. Il blocco If deve terminare con un’istruzione End If.

Per determinare se un'istruzione è un blocco If, esaminare gli elementi successivi allaparola chiave Then. Se dopo tale parola chiave e sulla stessa riga non vi sono altri elementi a eccezione di uncommento, l'istruzione viene considerata un'istruzione If su una sola riga.

Le proposizioni Else e ElseIf sono entrambe facoltative. Un blocco If può contenere un numero qualsiasi di proposizioni ElseIf, nessuna delle quali deve tuttavia apparire dopo una proposizione Else. Le istruzioni If a blocchi possono essere nidificate, ovvero inserite una all’interno dell’altra.

Nell'esecuzione di un blocco If (seconda sintassi) viene analizzata condizione. Se condizione è True, verranno eseguite le istruzioni successive a Then. Se condizione è False, verranno valutate singolarmente le condizioni ElseIf eventualmente presenti. Quando viene individuata una condizione True, vengono eseguite le istruzioni immediatamente successive all'istruzione Then associata. Se nessuna delle condizioni ElseIf risulta True (o in assenza di proposizioni ElseIf), verranno eseguite le istruzioni che seguono l'istruzione Else. Dopo l'esecuzione delle istruzioni che seguono Then o Else, verrà eseguita l'istruzione che segue EndIf.

Suggerimento L’istruzione Select Case può risultare più utile per la valutazione di un'espressione singola che include diverse azioni possibili. La proposizione TypeOf nomeoggetto Is tipooggetto non può essere tuttavia utilizzata con l'istruzione Select Case.

Nota La proposizione TypeOf non può essere utilizzata con tipi di dati diversi da Object, quali Long, Integer e così via.