Štruktúra Select Case je užitočná štruktúra VBA pre rozhodnutia zahŕňajúce tri alebo viac možností v Exceli 2016 (hoci funguje aj s dvoma možnosťami, ktoré poskytujú alternatívu k štruktúre If-Then-Else).
Príklad výberu prípadu
Nasledujúci príklad ukazuje, ako používať štruktúru Select Case:
Sub ShowDiscount3()
Dim Množstvo ako dlhé
Dvojnásobná zľava
Množstvo = InputBox(“Zadajte množstvo:”)
Vyberte Množstvo prípadu
Prípad 0 až 24
Zľava = 0,1
Prípad 25 až 49
Zľava = 0,15
Prípad 50 až 74
Zľava = 0,2
Prípad je >= 75
Zľava = 0,25
Koniec Vyberte
MsgBox „Zľava: “ & Zľava
End Sub
V tomto príklade sa vyhodnocuje premenná Množstvo. Rutina kontroluje štyri rôzne prípady (0–24, 25–49, 50–74 a 75 alebo viac).
Za každým vyhlásením Case môže nasledovať ľubovoľný počet vyhlásení a všetky sa vykonajú, ak je prípad pravdivý. Ak použijete iba jeden príkaz, ako v tomto príklade, môžete príkaz umiestniť na rovnaký riadok ako kľúčové slovo Case, pred ktorým bude dvojbodka – znak oddeľovača príkazov VBA. Vďaka tomu je kód kompaktnejší a o niečo prehľadnejší. Ako vyzerá rutina v tomto formáte:
Sub ShowDiscount4 ()
Dim Množstvo ako dlhé
Dvojnásobná zľava
Množstvo = InputBox(“Zadajte množstvo:”)
Vyberte Množstvo prípadu
Prípad 0 až 24: Zľava = 0,1
Prípad 25 až 49: Zľava = 0,15
Prípad 50 až 74: zľava = 0,2
Prípad je >= 75: zľava = 0,25
Koniec Vyberte
MsgBox „Zľava: “ & Zľava
End Sub
Keď VBA vykoná štruktúru Select Case, štruktúra sa ukončí hneď, ako VBA nájde skutočný prípad a vykoná príkazy pre tento prípad.
Vnorený príklad Select Case
Ako ukazuje nasledujúci príklad, štruktúry Select Case môžete vnoriť. Táto rutina preskúma aktívnu bunku a zobrazí správu s popisom obsahu bunky. Všimnite si, že procedúra má tri štruktúry Select Case a každá má svoj vlastný príkaz End Select:
Sub CheckCell()
Dim Msg As String
Select Case IsEmpty (ActiveCell)
Prípad pravda
Msg = "je prázdne."
Prípad Else
Vyberte Case ActiveCell.HasFormula
Prípad pravda
Msg = „má vzorec“
Prípad Else
Vyberte veľkosť písmen je numerická (ActiveCell)
Prípad pravda
Msg = „má číslo“
Prípad Else
Msg = „má text“
Koniec Vyberte
Koniec Vyberte
Koniec Vyberte
MsgBox „Cell “ & ActiveCell.Address & „ “ & Msg
End Sub
Logika je asi takáto:
Zistite, či je bunka prázdna.
Ak nie je prázdny, skontrolujte, či obsahuje vzorec.
Ak neexistuje vzorec, zistite, či obsahuje číselnú hodnotu alebo text.
Keď rutina skončí, premenná Msg obsahuje reťazec, ktorý popisuje obsah bunky. Funkcia MsgBox zobrazí túto správu.
Správa zobrazená postupom CheckCell.
Štruktúry Select Case môžete vnoriť tak hlboko, ako potrebujete, ale uistite sa, že každý príkaz Select Case má zodpovedajúci príkaz End Select.
Ak stále nie ste presvedčení, že odsadenie kódu stojí za námahu, predchádzajúci zoznam slúži ako dobrý príklad. Zárezy naozaj preto, aby boli úrovne vnorenia jasné. Pozrite sa na rovnaký postup bez akéhokoľvek odsadenia:
Sub CheckCell()
Dim Msg As String
Select Case IsEmpty (ActiveCell)
Prípad pravda
Msg = "je prázdne."
Prípad Else
Vyberte Case ActiveCell.HasFormula
Prípad pravda
Msg = „má vzorec“
Prípad Else
Vyberte veľkosť písmen je numerická (ActiveCell)
Prípad pravda
Msg = „má číslo“
Prípad Else
Msg = „má text“
Koniec Vyberte
Koniec Vyberte
Koniec Vyberte
MsgBox „Cell “ & ActiveCell.Address & „ “ & Msg
End Sub
Dosť nepochopiteľné, však?