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

CONTENUTI AREA PREMIUM

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:

  1. Inoltra questa newsletter via e-mail, ma prima elimina il link per la cancellazione in fondo, in modo da non essere accidentalmente cancellato

  2. Chiedi al tuo amico/collega di visitare Excel Academy 

  3. Inserisci un link al sito di Excel Academy nella newsletter aziendale o nel tuo sito web.