Scopri come utilizzare l’istruzione Select Case nel linguaggio delle macro Excel
In questo articolo ti mostrerò come gestire la verifica di condizioni in modo differente rispetto alle istruzioni If ... Then ... End If ovvero attraverso il Select Case VBA in Microsoft Excel.
In precedenza abbiamo parlato delle istruzioni If ... Then ... End If. Solitamente, facciamo ricorso ad esse, all’interno delle procedure VBA, quando è necessario valutare differenti condizioni.
Tuttavia, quando le condizioni da verificare sono tante, si utilizzano tante istruzioni If ...Then...End If. A queste si aggiungono spesso gli ElseIf e gli operatori Or e And. Tutto ciò consente di creare una concatenazione di condizioni da verificare.
Sebbene non ci sia nulla di sbagliato in tutto ciò, è importante sottolineare che l’utilizzo di tanti If crea dei rallentamenti nell'esecuzione del codice. Il motivo è semplice. Tutte le condizioni vengono lette fino a che non viene individuata quella corretta.
Inoltre, l’utilizzo della struttura Select Case VBA è più semplice e immediata da capire e soprattutto da scrivere rispetto alla struttura If ... Then.
Ecco perché in questi casi la soluzione più efficiente è utilizzare il Select Case VBA.
La sintassi della struttura Select Case VBA
Partiamo dall’analisi della sintassi dell'istruzione Select Case VBA.
In Microsoft Excel la struttura Select Case VBA (in inglese Case statement) è utile per prendere decisioni che coinvolgono tre o più opzioni.
La struttura Select Case VBA funziona anche con due o più opzioni, fornendo un'alternativa a la struttura If Then Else.
Rispetto a quest’ultima è più flessibile ed ha una più rapida esecuzione. Oltre a fornire un codice più semplice rispetto alle istruzioni If nidificate.

L’espressione è la variabile da valutare. Mentre la costante o valore rappresenta la possibile condizione da verificare. Può trattarsi di un valore numerico, una stringa, un intervallo di valori, una condizione relazionale o una combinazione di questi elementi.
Non vi sono limitazioni al numero di istruzioni che è possibile eseguire attraversi un'istruzione Case.
Tutte le istruzioni Select Case terminano con end Select. Questa istruzione è sempre necessaria per chiudere la struttura.
Un esempio di utilizzo di Select Case VBA
L'esempio seguente mostra come usare la struttura Select Case all’interno di una macro. Attraverso una finestra di inserimento (InputBox) viene richiesto di inserire una votazione. Sulla base de voto inserito verrà restituito un giudizio finale.

Quando VBA esegue una struttura Select Case, la struttura viene chiusa non appena VBA trova un caso Vero ed esegue le istruzioni per quel caso.
L’esempio precedente può essere riscritto in modo differente.
In questa seconda forma, è stata inserita l'istruzione sulla stessa riga della parola chiave Case, preceduta da due punti.
In questo modo il codice diventa più compatto e più chiaro.

Esempio di Select Case nidificato
È inoltre possibile nidificare le strutture Select Case, come mostrato nel seguente esempio.
Questa routine esamina la cella attiva e visualizza un messaggio che descrive il contenuto della cella.
Si noti che la procedura ha tre strutture Select Case e ognuna ha la propria istruzione End Select.

La procedura funziona seguendo la seguente logica:
- Verifica se la cella attiva è vuota.
- Se non è vuota, verifica se contiene una formula.
- Se non contiene una formula, verifica se contiene un valore numerico o un testo.
Al termine della routine, la variabile Messaggio mostrerà una stringa che descrive il contenuto di una cella.
È possibile nidificare le strutture Select Case ma è necessario assicurarsi che ogni istruzione Select Case abbia una corrispondente istruzione End Select.
Questa modalità nidificata risulta utile quando si vuole creare differenti alternative all’interno della stessa condizione.
I rientri (la cosiddetta indentazione) aiutano a rendere chiari e leggibili i livelli di nidificazione.
Se non sei ancora convinto dell’utilità dei rientri, la seguente routine ti servirà come buon esempio.
Proviamo infatti ad analizzare la procedura precedente senza i rientri.

Come utilizzare la struttura Select Case VBA in una UserForm
Un altro interessante esempio di utilizzo dell’istruzione Select Case è con le OptionButton (pulsante di opzione VBA) all’interno di una UserForm.

In questo caso utilizzeremo la proprietà Value delle OptionButton. Questa proprietà assume due valori:
- True quando una OptionButton è selezionata
- False quando una OptionButton è deselezionata
Pertanto l’espressione Select Case da verificare sarà True, mentre useremo il nome delle OptionButton come costante da verificare per ciascun Case.
A seconda della OptionButton selezionata, al clic del pulsante OK (CommandButton1), verrà eseguita una diversa istruzione.

In particolare, a ciascun OptionButton sarà associato un messaggio (MsgBox) che verrà visualizzato quando la proprietà (Value) delle OptionButton corrisponde a True.

È tuttavia possibile ottenere gli stessi risultati utilizzando l'istruzione If.
Se avessimo usato l'istruzione If i risultati sarebbero stai i seguenti:


La differenza sta proprio nella velocità di esecuzione.
Vediamo di capire come.
Supponiamo venga selezionata la OptionButton3.
Nel caso di utilizzo dell'istruzione If, prima di eseguire l’istruzione finale, tutte le condizioni dovranno essere lette una ad una. Questo perché non si conosce a priori quale delle istruzioni restituisce come risultato True (Vero).
Mentre nel caso di utilizzo della struttura Select Case VBA, verrà eseguita direttamente l'istruzione corrispondente.
Questo perché il codice conosce in anticipo quale delle opzioni è stata selezionata.
Potrebbero interessarti anche i seguenti articoli:
- Maschere Excel: UserForm e pulsanti
- UserForm Excel: calcolo della media
- UserForm Excel: blocco del pulsante chiudi
- ListBox VBA Excel: casella di riepilogo
- ComboBox Excel con valore di default
- ComboBox Excel VBA: uso casella combinata
Spero l’articolo ti sia utile. Se ti va lascia pure un commento.
Buon lavoro!
Se vuoi saperne di più sulle macro Excel allora i uno sguardo ai seguenti articoli:
Vuoi imparare a utilizzare il linguaggio Excel VBA?
Basta con i lavori noiosi e ripetitivi! Grazie al VBA puoi far lavorare Excel al tuo posto!
Ho registrato per te un corso interamente dedicato alle Macro e al VBA.
Attraverso degli esempi pratici, ti introdurrò, al mondo delle Macro di Excel illustrandoti tutto il potenziale per automatizzare le tue attività di lavoro quotidiane.
Cosa aspetti?
Sfrutta tutto il potenziale di Excel con il corso Macro e VBA!