Sommario:
- Esempio di caso di selezione
- Come dimostrato nel seguente esempio, è possibile nidificare le strutture di Case selezionate. Questa routine esamina la cella attiva e visualizza un messaggio che descrive il contenuto della cella. Notare che la procedura ha tre strutture Select Case e ciascuna ha la propria istruzione End Select:
Video: VBA Mini Calendario - Generazione Date – Parte 1 2025
La struttura Select Case è un'utile struttura VBA per le decisioni che coinvolgono tre o più opzioni in Excel 2016 (sebbene funzioni anche con due opzioni, fornendo un'alternativa alla struttura If-Then-Else).
Esempio di caso di selezione
L'esempio seguente mostra come utilizzare la struttura Seleziona caso:
SottoschedaDistribuzione3 () Dim Quota Se Sconto lungo come Doppio Quantità = InputBox ("Inserisci quantità:") Seleziona caso Quantità Da 0 a 24 Sconto = 0. 1 Da 25 a 49 Sconto = 0. 15 Caso da 50 a 74 Sconto = 0. 2 Caso è> = 75 Sconto = 0. 25 Fine Seleziona MsgBox "Sconto:" e fine sconto > In questo esempio, la variabile Quantità è in fase di valutazione. La routine controlla quattro casi diversi (0-24, 25-49, 50-74 e 75 o superiore).
Sub ShowDiscount4 () Dim Quantità As Long Dim Discount As Double Quantità = InputBox ("Immetti quantità:") Seleziona caso Quantità Case 0 a 24: Sconto = 0. 1 Caso 25 A 49: Sconto = 0. 15 Caso 50 a 74: Sconto = 0. 2 Caso è> = 75: Sconto = 0. 25 Fine Seleziona MsgBox "Sconto:" & Sconto Fine sott.
Quando VBA esegue una struttura Select Case, la struttura viene chiusa non appena VBA trova un caso reale ed esegue le istruzioni per quel caso.
Come dimostrato nel seguente esempio, è possibile nidificare le strutture di Case selezionate. Questa routine esamina la cella attiva e visualizza un messaggio che descrive il contenuto della cella. Notare che la procedura ha tre strutture Select Case e ciascuna ha la propria istruzione End Select:
Sub CheckCell () Dim Msg As String Select Case IsEmpty (ActiveCell) Caso True Msg = "è vuoto. "Case Else Select Case ActiveCell. HasFormula Case True Msg = "ha una formula" Case Else Select Case IsNumeric (ActiveCell) Case True Msg = "ha un numero" Case Else Msg = "ha testo" Fine Seleziona Fine Seleziona Fine Seleziona MsgBox "Cella" e ActiveCell. Indirizzo & "" & Msg End Sub
La logica va più o meno così:
-
Se non è vuoto, vedere se contiene una formula.
-
Se non c'è una formula, scopri se contiene un valore numerico o un testo.
-
Al termine della routine, la variabile Msg contiene una stringa che descrive il contenuto della cella. La funzione MsgBox visualizza quel messaggio.
Un messaggio visualizzato dalla procedura CheckCell.
Se non sei ancora convinto che il codice di indentazione valga la pena, la precedente lista serve da buon esempio. Le rientranze davvero per rendere chiari i livelli di nidificazione. Dai un'occhiata alla stessa procedura senza indentazione:
Sub CheckCell () Dim Msg As String Select Case IsEmpty (ActiveCell) Caso True Msg = "è vuoto. "Case Else Select Case ActiveCell. HasFormula Case True Msg = "ha una formula" Case Else Select Case IsNumeric (ActiveCell) Case True Msg = "ha un numero" Case Else Msg = "ha testo" Fine Seleziona Fine Seleziona Fine Seleziona MsgBox "Cella" e ActiveCell. Indirizzo & "" & Msg End Sub
Abbastanza incomprensibile, eh?
