Struktura Select Case je užitečná struktura VBA pro rozhodnutí zahrnující tři nebo více možností v Excelu 2016 (ačkoli funguje také se dvěma možnostmi, což představuje alternativu ke struktuře If-Then-Else).
Příklad výběru případu
Následující příklad ukazuje, jak používat strukturu Select Case:
Sub ShowDiscount3()
Tlumené množství jako dlouhé
Dvojitá sleva
Množství = InputBox(“Zadejte množství:”)
Vyberte Množství pouzdra
Případ 0 až 24
Sleva = 0,1
Případ 25 až 49
Sleva = 0,15
Případ 50 až 74
Sleva = 0,2
Případ je >= 75
Sleva = 0,25
Konec Vyberte
MsgBox „Sleva: “ & Sleva
End Sub
V tomto příkladu se vyhodnocuje proměnná Množství. Rutina kontroluje čtyři různé případy (0–24, 25–49, 50–74 a 75 nebo vyšší).
Za každým příkazem Case může následovat libovolný počet příkazů a všechny jsou provedeny, pokud je případ pravdivý. Pokud použijete pouze jeden příkaz, jako v tomto příkladu, můžete příkaz umístit na stejný řádek jako klíčové slovo Case, před kterým bude dvojtečka – znak oddělovače příkazů VBA. Díky tomu je kód kompaktnější a o něco přehlednější. Takto vypadá rutina v tomto formátu:
Sub ShowDiscount4 ()
Tlumené množství jako dlouhé
Dvojitá sleva
Množství = InputBox(“Zadejte množství:”)
Vyberte Množství pouzdra
Případ 0 až 24: Sleva = 0,1
Případ 25 až 49: Sleva = 0,15
Případ 50 až 74: Sleva = 0,2
Případ je >= 75: Sleva = 0,25
Konec Vyberte
MsgBox „Sleva: “ & Sleva
End Sub
Když VBA spustí strukturu Select Case, struktura se ukončí, jakmile VBA najde pravdivý případ a provede příkazy pro tento případ.
Vnořený příklad Select Case
Jak ukazuje následující příklad, můžete vnořit struktury Select Case. Tato rutina prozkoumá aktivní buňku a zobrazí zprávu popisující obsah buňky. Všimněte si, že procedura má tři struktury Select Case a každá má svůj vlastní příkaz End Select:
Sub CheckCell()
Dim Msg As String
Select Case IsEmpty (ActiveCell)
Případ pravdivý
Msg = "je prázdné."
Případ Else
Vyberte Case ActiveCell.HasFormula
Případ pravdivý
Msg = „má vzorec“
Případ Else
Vyberte velikost písmen jeNumeric(ActiveCell)
Případ pravdivý
Msg = „má číslo“
Případ Else
Msg = „má text“
Konec Vyberte
Konec Vyberte
Konec Vyberte
MsgBox „Cell “ & ActiveCell.Address & „ “ & Msg
End Sub
Logika zní asi takto:
Zjistěte, zda je buňka prázdná.
Pokud není prázdný, podívejte se, zda obsahuje vzorec.
Pokud neexistuje žádný vzorec, zjistěte, zda obsahuje číselnou hodnotu nebo text.
Když rutina skončí, proměnná Msg obsahuje řetězec, který popisuje obsah buňky. Funkce MsgBox zobrazí tuto zprávu.
Zpráva zobrazená postupem CheckCell.
Struktury Select Case můžete vnořit tak hluboko, jak potřebujete, ale ujistěte se, že každý příkaz Select Case má odpovídající příkaz End Select.
Pokud stále nejste přesvědčeni, že odsazení kódu stojí za námahu, předchozí výpis slouží jako dobrý příklad. Odsazení opravdu proto, aby byly úrovně vnoření jasné. Podívejte se na stejný postup bez jakéhokoli odsazení:
Sub CheckCell()
Dim Msg As String
Select Case IsEmpty (ActiveCell)
Případ pravdivý
Msg = "je prázdné."
Případ Else
Vyberte Case ActiveCell.HasFormula
Případ pravdivý
Msg = „má vzorec“
Případ Else
Vyberte velikost písmen jeNumeric(ActiveCell)
Případ pravdivý
Msg = „má číslo“
Případ Else
Msg = „má text“
Konec Vyberte
Konec Vyberte
Konec Vyberte
MsgBox „Cell “ & ActiveCell.Address & „ “ & Msg
End Sub
Docela nepochopitelné, co?