- ExcelMinds - Trucchi e suggerimenti per Microsoft Excel
- Posts
- Inizia con le basi del VBA: il costrutto IF THEN ELSE spiegato!
Inizia con le basi del VBA: il costrutto IF THEN ELSE spiegato!
Come utilizzare le istruzioni condizionali per potenziare le tue macro
La tua SCUOLA DI EXCEL
Centinaia di Trucchi e Suggerimenti per le tue necessità quotidiane | Il tuo Corso di Excel VBA. Le prime 4 lezioni GRATIS |
LINK UTILI
ExcelMinds
Non lasciare che le nostre mail finiscano nella cartella dello SPAM
Aggiungi l’indirizzo del mittente ai tuoi contatti
CITAZIONE DELLA SETTIMANA
Il giorno in cui il bambino si rende conto che tutti gli adulti sono imperfetti, diventa un adolescente; il giorno in cui li perdona, diventa un adulto; il giorno che perdona se stesso, diventa un saggio.
Alden Albert Nowlan
Attualmente l’AREA PREMIUM include i seguenti contenuti:
168 Tips and Tricks
91 Formule avanzate spiegate passo-passo
12 Templates pronti all’uso
651 Esempi di Codice VBA e macro su casi reali
34 Brevi Tutorial VBA
Ti ricordo lo sconto del 10%
sull’abbonamento all’AREA PREMIUM*
(codice sconto NEWS10)
*Valido anche per l’Abbonamento Annuale, già notevolmente scontato
Ciao ExcelMinder,
stiamo pensando di organizzare dei corsi su Microsoft Excel fuori dall’orario lavorativo e la tua opinione è preziosa per noi. Ti chiediamo di dedicare pochi secondi per rispondere a questo sondaggio (due sole domande) e aiutarci ad organizzarli al meglio.
SE leggi questo tutorial ALLORA sarai un programmatore VBA migliore
Oggi approfondiremo le istruzioni condizionali in VBA. Dimostreremo come diversi controlli logici faranno sì che la tua macro segua percorsi diversi.
Istruzione IF THEN di base
Un'istruzione IF THEN esegue in modo condizionale un gruppo di azioni, a seconda del valore di un'espressione. Esaminiamo la sintassi della forma più elementare dell'istruzione IF THEN:
If [la condizione è vera] Then
[fa qualcosa]
End If
Questa è la forma più semplice di istruzione IF THEN. È di vitale importanza che ti ricordi di inserire le parole chiave End If in fondo alla tua dichiarazione. Compileremo i campi [la condizione è vera] e [fa qualcosa] nel prossimo esempio.
Apri il tuo Visual Basic Editor e inserisci il seguente esempio:
Sub demo_IF_THEN()
If Range("A1") = "" Then
Range("B1") = "A1 è vuota"
End If
End Sub
Questa demo verifica se il valore nella cella A1 è vuoto o meno. In tal caso, nella cella B1 verranno visualizzate le parole "A1 è vuota". Sebbene questo esempio abbia solo una "azione" [fa qualcosa] quando la condizione è soddisfatta, puoi avere tutte le azioni [fa qualcosa] che desideri all'interno della tua istruzione IF. Non c'è limite al numero di azioni che puoi eseguire all'interno della tua istruzione IF.

L’istruzione IF THEN ELSE
Un'istruzione IF THEN ELSE controlla se una condizione è soddisfatta e dice alla tua macro cosa fare se la condizione non è soddisfatta. Ha una forma come questa:
If [la condizione è vera] Then
[fa qualcosa]
Else
[fa qualche altra cosa]
End If
Fondamentalmente, se la condizione originale testata non è vera, verranno eseguite le azioni nella sezione [fa qualche altra cosa]. Modifichiamo il nostro esempio precedente per illustrare come viene evocata la porzione ELSE.
Sub demo_IF_THEN()
If Range("A2") > 10 Then
Range("B2") = "A2 è più grande di 10"
Else
Range("B2") = "A2 non è più grande di 10"
End If
End Sub
Questo esempio esamina il valore nella cella A2. Se in quella cella viene inserito un numero maggiore di 10 (>), la cella B2 cambierà per avvisarti. Se non è maggiore di 10, la cella B2 ti dirà che il valore nella cella A2 non è maggiore di 10.
Gioca con numeri diversi nella cella A2 e osserva tu stesso la differenza. Cambia semplicemente il numero nella cella A2, quindi esegui la macro demo_IF_THEN premendo F5 dal tuo editor VBA.
CONTINUA »
Excel VBA Masterclass
Vuoi imparare a sfruttare al massimo il potenziale di Excel?
Il corso di VBA per Excel che ti presentiamo ti insegnerà come automatizzare le tue attività lavorative e risparmiare tempo prezioso. Imparerai a creare strumenti di lavoro personalizzati e adattati alle tue esigenze, grazie alle funzionalità avanzate di Excel.
VBA Masterclass è un corso a dispense con rilascio settimanale.
Al momento è composta da 52 dispense per oltre 1.800 pagine, ma contiamo di implementarlo ancora. Ogni settimana al partecipante vengono rilasciate una o più dispense accompagnate da alcuni file di supporto.
Inoltre, sempre ogni settimana, il partecipante potrà cimentarsi in un breve test per verificare la comprensione dei concetti illustrati nelle dispense.
13 di queste 52 dispense sono per così dire "riepilogative": propongono un ripasso di alcuni argomenti trattati nelle dispense precedenti in quanto questi concetti vengono utilizzati per creare delle applicazioni. Tali progetti pratici sono completamente guidati.
Al termine del percorso, il partecipante potrà cimentarsi in un vero e proprio esame finale il cui superamento permette il download dell'attestato formativo. Il percorso completo, al momento, dura 43 settimane.
È chiaro che sarebbe impossibile ottenere la stessa mole di informazioni con un corso live tradizionale. Probabilmente occorrerebbero più di 100 ore di formazione.
Le prime 4 lezioni GRATIS!
Non lasciarti sfuggire questa opportunità unica di diventare un vero maestro di Excel VBA!
Al momento il corso include:
52 dispense
1.839 pagine
oltre 350 immagini esplicative
oltre 360 snippet di codice VBA
13 progetti pratici completamente guidati
112 file Excel scaricabili con il codice e/o i programmi illustrati nelle dispense
52 momenti di esercitazione e di test
L’istruzione IF THEN ELSEIF
Aggiungiamo un ulteriore livello di complessità alle nostre istruzioni IF: l'istruzione ELSEIF. Le istruzioni ELSEIF ti consentono di controllare una serie di condizioni all'interno dello stesso blocco generale "IF THEN". Appare così:
If [la condizione è vera] Then
[fa qualcosa]
ElseIf [la condizione 2 è vera] Then
[fa qualche altra cosa]
ElseIf [la condizione 3 è vera] Then
[fa qualche altra cosa]
End If
Puoi avere tutti gli ELSEIF che desideri (entro limiti ragionevoli, ovviamente), il che significa che puoi controllare una serie di condizioni diverse, in questo modo:
Sub demo_IF_THEN()
If Range("A2") > 10 Then
Range("B2") = "A2 è più grande di 10"
ElseIf Range("A2") > 5 Then
Range("B2") = "A2 è più grande di 5"
ElseIf IsEmpty(Range("A2")) Then
Range("B2") = "A2 è vuota"
End If
End Sub
Questo esempio controlla tre condizioni dall'alto verso il basso, ma scende nel ramo [fa qualcosa...] solo una volta. Seguirà il percorso corrispondente alla prima condizione che è vera.
Ad esempio, supponiamo che tu abbia un valore "12" nella cella A2. Il numero 12 è maggiore di 10 ed è maggiore di 5, quindi sembra che le prime due condizioni siano entrambe soddisfatte, giusto? Tuttavia, poiché VBA si ferma alla prima condizione vera, la macro non seguirà entrambi i percorsi.
Quando esegui la macro, prima controlla se il numero 12 è maggiore di 10. Lo è, quindi la macro scrive "A2 è maggiore di 10" e passa immediatamente alla riga End If in basso. Non controlla nemmeno se il valore è maggiore o meno di 5! Questo è un concetto molto importante da ricordare, ed è un concetto che molti programmatori di livello intermedio spesso dimenticano.
Se il valore nella cella A2 fosse maggiore di 5, ma minore o uguale a 10, la macro passerebbe al secondo ramo e riporterebbe "A2 è maggiore di 5". Poiché VBA controlla le condizioni in sequenza, non abbiamo nemmeno dovuto chiedergli di confermare che anche il valore fosse inferiore o uguale a 10! È un piccolo pratico risparmio di tempo.
Nota che la terza condizione controlla se la cella A2 è vuota. Il comando IsEmpty potrebbe essere nuovo per te. È una delle tante funzioni integrate di cui VBA dispone per semplificarti la vita.
L’istruzione IF THEN ELSEIF ELSE
Possiamo mettere insieme tutto questo unendo le competenze che abbiamo imparato finora. Sì, puoi anche includere un'istruzione ELSE quando usi le istruzioni ELSEIF, ma l'istruzione ELSE deve seguire le istruzioni ELSEIF. Ecco la sintassi:
If [la condizione è vera] Then
[fa qualcosa]
ElseIf [la condizione 2 è vera] Then
[fa qualche altra cosa]
ElseIf [la condizione 3 è vera] Then
[fa qualche altra cosa]
Else
[fa qualche altra cosa]
End If
Aggiungi un'istruzione ELSE al nostro esempio precedente e inserisci un "3" nella cella A2.
Sub demo_IF_THEN()
If Range("A2") > 10 Then
Range("B2") = "A2 è più grande di 10"
ElseIf Range("A2") > 5 Then
Range("B2") = "A2 è più grande di 5"
ElseIf IsEmpty(Range("A2")) Then
Range("B2") = "A2 è vuota"
Else
Range("B2") = "A2 è <=5 e non è vuota"
End If
End Sub
Esegui la macro con un 3 nella cella A2 e la stringa nell'istruzione ELSE verrà visualizzata nella cella B2. Le "azioni" ELSE vengono eseguite solo se nessuna delle altre condizioni è soddisfatta. In altre parole, se nient'altro è vero, deve esserlo la condizione ELSE.
A proposito, se provi accidentalmente a mettere l'istruzione ELSE prima di un'istruzione ELSEIF, otterrai un piccolo errore carino, come questo:

Utilizzo spesso le istruzioni IF THEN nei miei tutorial VBA.
Durante l'ultima lezione, abbiamo parlato dei cicli For e di come utilizzarli per scorrere una serie di elementi in modo super veloce. La combinazione delle istruzioni IF THEN e dei cicli For è davvero una combinazione potente.
Quando inizi a combinare diverse competenze VBA, come i cicli For e le istruzioni IF THEN, sarai davvero in grado di creare macro eccezionali. Nella prossima lezione inizieremo a imparare come utilizzare gli array nelle macro. Resta con noi e faremo in modo che tu migliori in VBA, un passo alla volta! E ricorda, se sei interessato, abbiamo il nostro corso Excel VBA Masterclass che ti permetterà di conoscere tutte le potenzialità di questo strumento.
Arrivederci a presto!
Simone (aka Somebooks)
Excel Academy
Informazioni sull'iscrizione alla newsletter: la newsletter di Excel Academy verrà recapitata solo a chi si è iscritto. Se ti è stata inoltrata e in futuro vuoi avere la tua copia, ti invitiamo a visitare questa pagina ed iscriverti.
Se desideri condividere questa newsletter con altri:
Inoltra questa newsletter via e-mail, ma prima elimina il link per la cancellazione in fondo, in modo da non essere accidentalmente cancellato
Chiedi al tuo amico/collega di visitare Excel Academy
Inserisci un link al sito di Excel Academy nella newsletter aziendale o nel tuo sito web.