Loading...

WizBlog Logo WizBlog
Windows > Software > VBA: L’uso della condizione IF, degli operatori logici e del GoTo

Else

GoTo

If

Macro

VBA

VBA: L’uso della condizione IF, degli operatori logici e del GoTo

Da Redazione

Maggio 05, 2015

VBA: L’uso della condizione IF, degli operatori logici e del GoTo

Se avete già letto le guide precedenti dovreste aver già capito come creare una funzione o procedura di base in VBA, capace di interfacciarsi con il contenuto delle celle di un foglio di calcolo Excel e di restituire un risultato. Adesso continuiamo ad entrare nel dettaglio introducendo il concetto di condizione selettiva, ovvero della sintassi If … Else.

Quando si usa la condizione If

Il costrutto If serve a differenziare il percorso dell’algoritmo del vostro codice VBA nei casi in cui in funzione di un determinato valore assunto da una variabile dobbiate procedere secondo strade differenti. Come fatto nei casi precedenti illustreremo il funzionamento della condizione IF con un esempio che chiarirà tutto, definiamo però intanto la sintassi dell’IF:

IF condizione Then

End IF

Letteralmente: Se la condizione è vera, allora esegui una certa parte di codice da cui uscirne alla fine.

La condizione IF presentata così è una condizione che permette di creare un percorso aggiuntivo per una certa parte di codice data una condizione vera, ma possiamo anche inserire una seconda istruzione, l’istruzione Else.
L’istruzione Else (letteralmente: altrimenti) è quella che permette al codice di divergere su due strade, secondo questa sintassi:

IF Condizione = Vera Then

Else

End IF

Ovvero: Se la condizione è vera esegui certe istruzioni, altrimenti ne esegui altre.

Un esempio semplice potrebbe essere il seguente, mettiamo caso nella cella A1 ci sia un determinato valore, e che vogliamo poter dire se questo valore è maggiore di 10 o no, allora:

condizione if 1

 Sub Calcolo()
Dim Valore As Integer</pre>
<pre>Valore = Worksheets("Foglio1").Cells(1, 1)   'prende il contenuto di A1 in Valore</pre>
<pre>If Valore < 10 Then            'se Valore è <10</pre>
<pre>Range("A2").Value = "Minore"    'scrivi Minore in A2</pre>
<pre>Else                            'altrimenti
</pre>
<pre>Range("A2").Value = "Maggiore"               'scrivi Maggiore in A2</pre>
<pre>End If                                       'fine IF</pre>
<pre>End Sub 

In questo esempio abbiamo inoltre introdotto lo strumento di scrittura su di una cella. Quanto scritto precedentemente dovrebbe essere abbastanza semplice da intuire, e possiamo sfruttare questo esempio per introdurre anche l’uso dei due principali operatori logici nelle condizioni If, ovvero And e Or.

Supponiamo di voler sapere se il numero è minore di 10 e contemporaneamente maggiore di 5, quindi:

Sub Calcolo()
Dim Valore As Integer
</pre>
<pre>Valore = Worksheets("Foglio1").Cells(1, 1)   'prende il contenuto di A1 in Valore</pre>
<pre>If Valore < 10 AND Valore > 5 Then         'se Valore è <10 e contemporaneamente è >5
Range("A2").Value = "Compreso tra 5 e 10"</pre>
<pre>Else                          'altrimenti</pre>
<pre>Range("A2").Value = "Minore di 5 o maggiore di 10"</pre>
<pre>End If</pre>
<pre>End Sub

condizione if 2

Con la condizione AND andiamo a legare in modo indissolubile le due condizioni, l’Else infatti sarà l’opposto ad entrambe le condizioni. Se invece vogliamo che sia verificata anche solo una delle due condizioni allora useremo una condizione OR, utile quando si lavora su due variabili, ad esempio:

If Valore1 < 10 OR Valore2 > 5 Then

Else

End If

E’ ovviamente possibile concatenare una serie di IF uno dentro l’altro, l’importante è rispettare la corretta sintassi.

Concludiamo infine questo paragrafo sull’IF introducendo la condizione GoTo che ci permette di andare avanti o tornare indietro in una certa porzione di codice. Prendiamo l’esempio di un interruttore, una cella può essere impostata su 1 (acceso) o su 0 (spento), ci poniamo come solo obiettivo di verificare che sia acceso, ovvero A1 = 1:

If A1 = 1 Then</pre>
<pre>GoTo Fine</pre>
<pre>Else</pre>
<pre>Range("A2").Value = "Interruttore Spento"</pre>
<pre>End If</pre>
<pre>Range("A2").Value ="1"                     'accendiamo l'interruttore</pre>
<pre>Fine:</pre>
<pre>'Se A1 = 1 allora non ha bisogno di eseguire la porzione di codice prima e salta direttamente qui all'etichetta Fine:</pre>
<pre>End IF

Detto questo andiamo avanti, e nella prossima guida (che trovate cliccando qui) invece parleremo di calcolo iterativo, e quindi di condizioni For e While.

Redazione Avatar

Redazione

Condividi con un amico