Excel VBA ha il costrutto IF Then Else che è possibile utilizzare per analizzare più condizioni ed eseguire codici basato su queste condizioni.
Un altro costrutto simile che ti consente di verificare più condizioni è l’istruzione SELECT CASE.
Seleziona caso è utile quando hai tre o più condizioni che desideri controllare. Puoi anche usarlo con due condizioni (ma ritengo che If Then Else sia più facile da usare in quei casi).
Un semplice esempio in cui l’istruzione Select Case è utile quando vuoi ottenere il voto di un studente in base ai voti che ha ottenuto (trattati 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.
Questo tutorial tratta:
Seleziona la sintassi del caso
Di seguito è riportata la sintassi di Seleziona caso in Excel VBA:
Select Case Test_ExpressionCase Value_1Code Block when Test_Expression = Value_1Case Value_2Code Block when Test_Expression = Value_2Case Value_3Code Block when Test_Expression = Value_3Case ElseCode Block when none of the case conditions are metEnd Select
- Test_Expression: questa è l’espressione il cui valore analizziamo utilizzando casi diversi (spiegati meglio con gli esempi seguenti).
- 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 specificata.
Per ogni istruzione Select Case che si utilizza, è necessario utilizzare l’istruzione End Select.
Seleziona esempi di caso
Ora capire meglio come utilizzare l’istruzione Select Case in VBA, esaminiamo alcuni esempi.
Si noti 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.
Cominciamo con un semplice esempio per vedere come Select Case ci permette di verificare le condizioni.
Esempio 1 – Controlla i numeri
Nell’esempio seguente, il codice chiede all’utente di inserire un numero qualsiasi compreso tra 1 e 5, quindi mostra una finestra di messaggio con il numero immesso dall’utente.
Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number between 1 and 5")Select Case UserInputCase 1MsgBox "You entered 1"Case 2MsgBox "You entered 2"Case 3MsgBox "You entered 3"Case 4MsgBox "You entered 4"Case 5MsgBox "You entered 5"End SelectEnd Sub
Nota che questo codice è tutt’altro che utile e non è nemmeno infallibile. Ad esempio, se inserisci 6 o qualsiasi stringa, non farà nulla. Ma come ho già detto, il mio intento qui è mostrare come funziona Select Case.
Esempio 2: utilizzo di Select Case con condizione IS
Puoi 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 IntegerUserInput = InputBox("Please enter a number")Select Case UserInputCase Is < 100MsgBox "You entered a number less than 100"Case Is >= 100MsgBox "You entered a number more than (or equal to) 100"End SelectEnd Sub
Esempio 3 – Utilizzo di Case Else per Catch All
Nell’esempio precedente, ho utilizzato 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 IntegerUserInput = InputBox("Please enter a number")Select Case UserInputCase Is < 100MsgBox "You entered a number less than 100"Case ElseMsgBox "You entered a number more than (or equal to) 100"End SelectEnd Sub
Esempio 4 – Utilizzo di un intervallo di numeri
In Select Case, puoi anche verificare un intervallo di numeri.
Il codice seguente richiede un input e mostra una finestra di messaggio basata sul valore.
Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number between 1 and 100")Select Case UserInputCase 1 To 25MsgBox "You entered a number less than 25"Case 26 To 50MsgBox "You entered a number between 26 and 50"Case 51 To 75MsgBox "You entered a number between 51 and 75"Case 75 To 100MsgBox "You entered a number more than 75"End SelectEnd Sub
Esempio 5 – Ottieni il voto in base ai voti ottenuti
Finora abbiamo visto esempi di base (che non sono veramente 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 su cui uno studente ottiene in base i voti in un esame.
Il codice sopra chiede all’utente i voti e sulla base di esso, mostra una finestra di messaggio con il voto finale.
Nel codice sopra, ho specificava tutte le condizioni – per i segni da 0 a 100.
Un altro modo per usare Seleziona caso è usare un caso Else alla fine. Ciò è utile quando si è tenuto conto di tutte le condizioni e quindi si specifica 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.
Esempio 6 – Creazione di una funzione personalizzata (UDF) utilizzando Seleziona caso
Nell’esempio sopra, il codice ha chiesto all’utente di inserire i segni.
Puoi anche creare una funzione personalizzata (Funzione definita dall’utente) che può essere utilizzata proprio 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:
Function GetGrade(StudentMarks As Integer)Dim FinalGrade As StringSelect Case StudentMarksCase Is < 33FinalGrade = "F"Case 33 To 50FinalGrade = "E"Case 51 To 60FinalGrade = "D"Case 60 To 70FinalGrade = "C"Case 70 To 90FinalGrade = "B"Case ElseFinalGrade = "A"End SelectGetGrade = FinalGradeEnd Function
Una volta che hai questo codice nella modulo, è possibile utilizzare 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 ho controlla se il numero nella cella A1 è pari o dispari.
Esempio 8 – Controllo per giorno della settimana / fine settimana (condizioni multiple)
Puoi anche utilizzare Seleziona caso per controllare più valori in lo stesso caso.
Ad esempio, il codice seguente utilizza la data corrente per mostrare se oggi è un giorno della settimana o un fine settimana (dove i giorni del fine settimana sono sabato e domenica)
Sub CheckWeekday()Select Case Weekday(Now)Case 1, 7MsgBox "Today is a Weekend"Case ElseMsgBox "Today is a Weekday"End SelectEnd Sub
Nel codice precedente, controlliamo due condizioni (1 e 7) nello stesso caso.
Nota: la funzione Weekday restituisce 1 per domenica e 7 per sabato.
Esempio 9 – Istruzioni Select Case annidate
Puoi anche 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 "Today is Sunday" Case Else MsgBox "Today is Saturday" End SelectCase ElseMsgBox "Today is a Weekday"End SelectEnd Sub
Nel codice sopra, Ho annidato il caso Seleziona per verificare se il fine settimana è un sabato o una domenica.
Nota: l’esempio mostrato sopra serve per spiegare il concetto. Questo non è il modo migliore o più pratico per scoprire il giorno della settimana / fine settimana.
Esempio 10 – Controllo della stringa di testo con Seleziona maiuscole
Puoi controllare stringhe specifiche usando Seleziona maiuscole e poi esegue 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 deve connettersi per l’onboarding.
Sub OnboardConnect()Dim Department As StringDepartment = InputBox("Enter Your Department Name")Select Case DepartmentCase "Marketing"MsgBox "Please connect with Bob Raines for Onboarding"Case "Finance"MsgBox "Please connect with Patricia Cruz for Onboarding"Case "HR"MsgBox "Please connect with Oliver Rand for Onboarding"Case "Admin"MsgBox "Please connect with Helen Hume for Onboarding"Case ElseMsgBox "Please connect with Tony Randall for Onboarding"End SelectEnd Sub
Spero che tutti gli esempi precedenti siano stati utili per comprendere il concetto e l’applicazione di Seleziona caso in Excel VBA.
Potrebbero piacerti anche i seguenti tutorial VBA:
- Cicli VBA di Excel: per il prossimo, fare mentre, fino a, per ciascuno.
- Per il ciclo successivo in VBA di Excel.
- Come registrare una macro in Excel.