Excel VBA Select Case Statement - Spiegato con esempi

Excel VBA ha il costrutto IF Then Else che è possibile utilizzare per analizzare più condizioni ed eseguire codici in base a queste condizioni.

Un altro costrutto simile che consente di verificare più condizioni è il SELEZIONA CASO dichiarazione.

Seleziona caso è utile quando si hanno tre o più condizioni che si desidera verificare. Puoi anche usarlo con due condizioni (ma sento che If Then Else è più facile da usare in quei casi).

Un semplice esempio in cui l'istruzione Select Case è utile quando si desidera ottenere il voto di uno studente in base ai voti che ha ottenuto (trattato come esempio più avanti in questo tutorial).

Nota: tutti i codici di esempio trattati in questo tutorial sono pensati per essere inseriti in un modulo in VBA.

Seleziona la sintassi del caso

Di seguito è riportata la sintassi di Select Case in Excel VBA:

Seleziona Case Test_Expression Case Value_1 Blocco di codice quando Test_Expression = Valore_1 Case Value_2 Blocco di codice quando Test_Expression = Valore_2 Case Valore_3 Blocco di codice quando Test_Expression = Valore_3 Case Altrimenti Blocco di codice quando nessuna delle condizioni case è soddisfatta Fine Seleziona
  • Test_Expression: Questa è l'espressione il cui valore analizziamo utilizzando diversi casi (spiegato meglio con gli esempi sottostanti).
  • Condizione_1, Condizione_2,… : Queste sono le condizioni su cui viene testata l'espressione di testo. Se soddisfa la condizione, viene eseguito il blocco di codice per la condizione data.

Per ogni istruzione Select Case utilizzata, è necessario utilizzare l'istruzione End Select.

Nota: Non appena viene soddisfatta una condizione, VBA esce dal costrutto select case. Quindi, se hai cinque condizioni e la seconda condizione è soddisfatta, VBA uscirà da Seleziona caso e il resto delle condizioni non verrà testato.

Seleziona esempi di casi

Ora per capire meglio come utilizzare l'istruzione Select Case in VBA, esaminiamo alcuni esempi.

Nota che la maggior parte degli esempi in questo tutorial hanno lo scopo di spiegare il concetto. Questi possono o non possono essere il modo migliore per portare a termine il lavoro.

Iniziamo con un semplice esempio di come Select Case ci consente di verificare le condizioni.

Esempio 1 - Controlla i numeri

Nell'esempio seguente, il codice chiede all'utente di inserire qualsiasi numero compreso tra 1 e 5, quindi mostra una finestra di messaggio con il numero inserito dall'utente.

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox ("Si prega di inserire un numero compreso tra 1 e 5") Select Case UserInput Case 1 MsgBox "Hai inserito 1" Case 2 MsgBox "Hai inserito 2" Case 3 MsgBox "Hai inserito 3" Case 4 MsgBox "Hai inserito 4" Case 5 MsgBox "Hai inserito 5" End Select End Sub

Nota che questo codice è tutt'altro che utile e non è nemmeno infallibile. Ad esempio, se inserisci 6 o qualsiasi stringa, non farebbe nulla. Ma come ho detto, il mio intento qui è mostrare come funziona Select Case.

Esempio 2 - Utilizzo di Select Case con IS Condition

È possibile utilizzare una condizione IS con il costrutto Select Case per verificare il valore dei numeri.

Il codice seguente controlla se il numero di input è maggiore di 100 o meno.

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox ("Si prega di inserire un numero") Select Case UserInput Case Is = 100 MsgBox "Hai inserito un numero maggiore di (o uguale a) 100" End Select End Sub

Esempio 3 - Utilizzo di Case Else per Catch All

Nell'esempio sopra, ho usato due condizioni (minore di 100 o maggiore o uguale a 100).

Invece del secondo caso con una condizione, puoi anche usare Case Else.

Case Else funge da catch-all e tutto ciò che non rientra in nessuno dei casi precedenti viene trattato da Case Else.

Di seguito è riportato un codice di esempio in cui ho utilizzato Case Else:

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox ("Inserire un numero") Select Case UserInput Case Is < 100 MsgBox "Hai inserito un numero inferiore a 100" Case Else MsgBox "Hai inserito un numero maggiore di (o uguale a ) 100" Fine Seleziona Fine Sub

Esempio 4 - Utilizzo di un intervallo di numeri

In Seleziona caso, puoi anche controllare un intervallo di numeri.

Il codice seguente richiede un input e mostra una finestra di messaggio in base al valore.

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox ("Si prega di inserire un numero compreso tra 1 e 100") Select Case UserInput Da 1 a 25 MsgBox "Hai inserito un numero inferiore a 25" Case da 26 a 50 MsgBox "Hai inserito un numero tra 26 e 50" Case da 51 a 75 MsgBox "Hai inserito un numero compreso tra 51 e 75" Case da 75 a 100 MsgBox "Hai inserito un numero superiore a 75" End Select End Sub

Esempio 5 - Ottieni il voto in base ai voti ottenuti

Finora abbiamo visto esempi di base (che non sono realmente utili nel mondo pratico).

Ecco un esempio che è più vicino a un esempio del mondo reale in cui è possibile utilizzare Seleziona caso in Excel VBA.

Il codice seguente ti darà il voto che uno studente ottiene in base ai voti di un esame.

Sub Grade() Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox("Enter Marks") Seleziona Case StudentMarks Case Is < 33 FinalGrade = "F" Case da 33 a 50 FinalGrade = "E" Case da 51 a 60 FinalGrade = "D " Case da 60 a 70 FinalGrade = "C" Case da 70 a 90 FinalGrade = "B" Case da 90 a 100 FinalGrade = "A" End Select MsgBox "The Grade is " & FinalGrade End Sub

Il codice di cui sopra chiede all'utente i voti e in base ad esso, mostra una finestra di messaggio con il voto finale.

Nel codice sopra, ho specificato tutte le condizioni - per i voti 0 - 100.

Un altro modo per utilizzare Select Case è utilizzare Case Else alla fine. Questo è utile quando hai tenuto conto di tutte le condizioni e poi specifichi cosa fare quando nessuna delle condizioni è soddisfatta.

Il codice seguente è una variazione del codice Grado con una piccola modifica. Alla fine, ha un'istruzione Case else, che verrà eseguita quando nessuna delle condizioni precedenti è vera.

Sub CheckOddEven() Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox("Enter Marks") Seleziona Case StudentMarks Case Is < 33 FinalGrade = "F" Case da 33 a 50 FinalGrade = "E" Case da 51 a 60 FinalGrade = "D " Case da 60 a 70 FinalGrade = "C" Case da 70 a 90 FinalGrade = "B" Case Else FinalGrade = "A" End Select MsgBox "The Grade is " & FinalGrade End Sub

Esempio 6 - Creazione di una funzione personalizzata (UDF) utilizzando Seleziona caso

Nell'esempio sopra, il codice ha chiesto all'utente l'input dei segni.

Puoi anche creare una funzione personalizzata (Funzione definita dall'utente) che può essere utilizzata come qualsiasi normale funzione del foglio di lavoro e che restituirà il voto degli studenti.

Di seguito è riportato il codice che creerà la formula personalizzata:

Funzione GetGrade(StudentMarks As Integer) Dim FinalGrade As String Seleziona Case StudentMarks Case Is < 33 FinalGrade = "F" Case da 33 a 50 FinalGrade = "E" Case da 51 a 60 FinalGrade = "D" Case da 60 a 70 FinalGrade = "C" Case da 70 a 90 FinalGrade = "B" Case Else FinalGrade = "A" End Select GetGrade = FinalGrade End Function

Una volta che hai questo codice nel modulo, puoi usare la funzione GetGrade nel foglio di lavoro come mostrato di seguito.

Esempio 7 - Seleziona DISPARI / PARI con Seleziona caso

Di seguito è riportato un codice di esempio in cui controllo se il numero nella cella A1 è pari o dispari.

Sub CheckOddEven() CheckValue = Range("A1").Value Select Case (CheckValue Mod 2) = 0 Case True MsgBox "Il numero è pari" Case False MsgBox "Il numero è dispari" End Select End Sub

Esempio 8 - Verifica per giorno della settimana/fine settimana (condizioni multiple)

È inoltre possibile utilizzare Seleziona caso per verificare più valori nello stesso caso.

Ad esempio, il codice seguente utilizza la data corrente per mostrare se oggi è un giorno feriale o un fine settimana (dove i giorni del fine settimana sono sabato e domenica)

Sub CheckWeekday() Select Case Weekday(Now) Case 1, 7 MsgBox "Oggi è un fine settimana" Case Else MsgBox "Oggi è un giorno feriale" End Select End Sub

Nel codice sopra, controlliamo due condizioni (1 e 7) nello stesso caso.

Nota: la funzione Weekday restituisce 1 per domenica e 7 per sabato.

Esempio 9 - Dichiarazioni Select Case nidificate

È inoltre possibile nidificare un'istruzione Select Case all'interno di un'altra.

Di seguito è riportato un codice che controlla se un giorno è un giorno della settimana o un fine settimana e, se è un fine settimana, verrà visualizzato se è un sabato o una domenica.

Sub CheckWeekday() Select Case Weekday(Now) Case 1, 7 Select Case Weekday(Now) Case 1 MsgBox "Oggi è domenica" Case Else MsgBox "Oggi è sabato" End Select Case Else MsgBox "Oggi è un giorno feriale" End Select End Sub

Nel codice sopra, ho annidato il Select Case per verificare se il fine settimana è sabato o domenica.

Nota: l'esempio mostrato sopra serve a spiegare il concetto. Questo non è il modo migliore o più pratico per scoprire giorni feriali/fine settimana.

Esempio 10 - Verifica della stringa di testo con Select Case

È possibile controllare stringhe specifiche utilizzando Select Case e quindi eseguire il codice basato su di esso.

Nel codice di esempio seguente, chiede all'utente di inserire il nome del proprio dipartimento e mostra il nome della persona con cui dovrebbe connettersi per l'onboarding.

Sub OnboardConnect() Dim Department As String Department = InputBox ("Inserisci il nome del tuo dipartimento") Seleziona Case Department Case "Marketing" MsgBox "Connettiti con Bob Raines per l'onboarding" Case "Finance" MsgBox "Connettiti con Patricia Cruz per l'onboarding" Case "HR" MsgBox "Connettiti con Oliver Rand per l'onboarding" Case "Admin" MsgBox "Connettiti con Helen Hume per l'onboarding" Case Else MsgBox "Connettiti con Tony Randall per l'onboarding" End Select End Sub

Spero che tutti gli esempi sopra riportati siano stati utili per comprendere il concetto e l'applicazione di Select Case in Excel VBA.

Potrebbero piacerti anche i seguenti tutorial VBA:

  • Cicli VBA di Excel: per il prossimo, fai mentre, fai fino a, per ciascuno.
  • Per il ciclo successivo in Excel VBA.
  • Come registrare una macro in Excel.

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave