Else
GoTo
If
Macro
VBA
VBA: L’uso della condizione IF, degli operatori logici e del GoTo
Da Redazione
Maggio 05, 2015
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:
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
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.
Articolo precedente
Funzioni in VBA: Differenze fra Function e Sub e come si usano
Articolo successivo
VBA: Usare i cicli For e Do While
Redazione
Articoli correlati
Guida alla ricerca di lavoro per neolaureati a Messina
Dicembre 04, 2024
Dove conviene aprire un’attività all’estero?
Novembre 17, 2024