fbpx
.st0{fill:#FFFFFF;}

Excel Esperto, Macro e VBA

Select Case VBA: istruzione condizionale

 Febbraio 19, 2021

By  Damiano Causale

  • Home
  • Select Case VBA: istruzione condizionale

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.

sintassi istruzione Select Case VBA

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.

un esempio di utilizzo dell'istruzione Select Case in una macro Excel

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.

come utilizzare l'istruzione Select Case in una macro Excel

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.

Select Case nidificate

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.

Istruzione Select Case senza 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.

UserForm Excel | OptionButton VBA

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.

esempio di utilizzo dell’istruzione Select Case all’interno di una UserForm

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

istruzione Select Case e OptionButton in UserForm Excel

È tuttavia possibile ottenere gli stessi risultati utilizzando l'istruzione If.

Se avessimo usato l'istruzione If i risultati sarebbero stai i seguenti:

Istruzione If VBA
Istruzione If ElseIf

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:

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:

Damiano Causale


Mi chiamo Damiano Causale, istruttore Microsoft certificato, per lavoro aiuto aziende e privati nell'utilizzo di Excel.

Damiano Causale

Your email address will not be published. Required fields are marked

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}