05 – Le MACRO – Il controllo IF…THEN…ELSE
Oggi scopriremo come utilizzare la struttura di controllo IF…THEN…ELSE,
Lo scopo della lezione sarà quello di verificare se un numero sia pari oppure dispari ed in base a questo controllo, formatteremo la cella in cui è contenuto il valore, in modi differenti.
Per fare questo ci viene in aiuto la struttura di controllo IF…THEN, inoltre è previsto un controllo aggiuntivo denominato ELSE
Iniziamo subito col vedere la sintassi:
If X = qualcosa Then
…righe di codice con le istruzioni da eseguire nel caso in cui la condizione è VERA
Else
…righe di codice con le istruzioni da eseguire nel caso in cui la condizione è FALSA
End If
Nel nostro caso la variabile “X” sarà rappresentato dai valori contenuti nella tabella.
Nel caso in cui la condizione venga soddisfatta eseguiremo le righe di codice dopo il comando Then, in caso contrario eseguiremo il codice dopo l’istruzione Else
Il controllo dovrà terminare con il comando End If
Tramite i comandi Interior.ColorIndex e Font.ColorIndex, coloreremo in modo mirato celle e caratteri della tabellina e sfruttando il ciclo FOR visto la scorsa settimana, ci sposteremo in tutte le celle della prima riga, per poi ripetere l’operazione per tutte le celle della seconda riga e così via fino a controllare l’intera tabella.
Nell’area di sviluppo ho creato una nuova macro che ho chiamato PARI_DISPARI
Facciamo partire la macro col comando F8 per vedere passo passo le varie righe di codice.
Nella prima riga tramite il comando Dim andiamo a dichiarare le variabili.
Riga sarà il contatore delle righe per il ciclo FOR
Col sarà il contatore delle colonne sempre per il secondo ciclo FOR
Mentre la variabile x rappresenterà il valore contenuto nella singola cella della tabellina.
Infatti, se premiamo F8 la riga successiva:
x = Cells(Riga, Col).Value
assegnerà a x il valore contenuto nell’incrocio di riga e colonna.
Premiamo F8
Ed ecco che arriviamo alla riga di controllo IF…THEN, con l’istruzione:
If x Mod 2 = 1 Then
Faremo controllare ad Excel se la divisione per 2 del valore x restituisce il resto di 1, tramite questa operazione scopriremo se un dato numero è pari o dispari.
Se volete potete andare a vedere il video dove spiego le funzioni Quoziente e Resto, vi lascio il link in descrizione.
https://www.youtube.com/watch?v=1d9vVt9sDCE
Se il risultato della funzione Mod 2 è uguale ad 1 passeremo alle righe successive, che nel nostro caso saranno:
Cells(Riga, Col).Interior.ColorIndex = 5
Che colorerà la cella di blu e:
Cells(Riga, Col).Font.ColorIndex = 2
Che colorerà il carattere di bianco
Come potete vedere poiché la condizione è stata soddisfatta, la macro salterà ovviamente la riga ELSE ma si porterà direttamente alla riga End If
F8 per arrivare alla riga:
Next Col
che farà avanzare di una unità il contatore del ciclo e successivamente ritorneremo ad assegnare a x il valore contenuto nella cella che interseca la riga 3 con la colonna 4.
Vi faccio notare come nella parte bassa della schermata nel riquadro Variabili locali, abbiamo sempre sotto controllo il valore delle variabili.
Ma andiamo avanti, premiamo F8 di nuovo e per la seconda volta arriviamo all’istruzione:
If x Mod 2 = 1 Then
Poiché il valore che si trova nella cella D3 è uguale a 2, il risultato della funzione sarà 0, in questo caso la condizione non essendo soddisfatta salterà il comando THEN per andare direttamente ad ELSE
Premiamo F8 ed andiamo con l’istruzione:
Cells(Riga, Col).Interior.ColorIndex = 3
A colorare la cella di rosso
Fatto questo passaggio la macro si porterà ancora una volta alla riga End If per poi ripetere successivamente i controlli all’interno del blocco FOR
Non ci resta che far partire l’intera macro con il comando F5 o premere sul tasto verde “esegui Sub” per ammirare il risultato finale.
Nel video qui sotto trovate tutti i passaggi appena illustrati, buona visione.