Struktura Select Case je uporabna struktura VBA za odločitve, ki vključujejo tri ali več možnosti v Excelu 2016 (čeprav deluje tudi z dvema možnostma, kar zagotavlja alternativo strukturi If-Then-Else).
Primer za izbiro primera
Naslednji primer prikazuje, kako uporabiti strukturo Select Case:
Sub ShowDiscount3()
Dim Quantity As Long
Dim Discount As Double
Količina = InputBox ("Vnesite količino: ")
Izberite Količina ohišja
Primer 0 do 24
Popust = 0,1
Primer 25 do 49
Popust = 0,15
Primer 50 do 74
Popust = 0,2
Primer je >= 75
Popust = 0,25
Konec Izberite
MsgBox »Popust:« & Popust
Končni sub
V tem primeru se ocenjuje spremenljivka količina. Rutinska preverjanja za štiri različne primere (0–24, 25–49, 50–74 in 75 ali več).
Vsakemu stavku Case lahko sledi poljubno število stavkov in vsi se izvršijo, če je primer resničen. Če uporabljate samo en stavek, kot v tem primeru, lahko stavek postavite v isto vrstico kot ključna beseda Case, pred njo pa je dvopičje – ločevalni znak stavka VBA. Tako je koda bolj kompaktna in nekoliko jasnejša. Takole izgleda rutina v tej obliki:
Sub ShowDiscount4 ()
Dim Quantity As Long
Dim Discount As Double
Količina = InputBox ("Vnesite količino: ")
Izberite Količina ohišja
Primer 0 do 24: popust = 0,1
Primer 25 do 49: popust = 0,15
Primer 50 do 74: popust = 0,2
Primer je >= 75: Popust = 0,25
Konec Izberite
MsgBox »Popust:« & Popust
Končni sub
Ko VBA izvede strukturo Select Case, se struktura zapusti takoj, ko VBA najde pravi primer in izvede stavke za ta primer.
Primer ugnezdenega Select Case
Kot je prikazano v naslednjem primeru, lahko ugnezdite strukture Select Case. Ta rutina pregleda aktivno celico in prikaže sporočilo, ki opisuje vsebino celice. Upoštevajte, da ima postopek tri strukture Select Case in vsaka ima svoj stavek End Select:
Sub CheckCell()
Zatemni sporočilo kot niz
Izberite Case Is Empty (ActiveCell)
Res je
Sporočilo = "je prazno."
Drugi primer
Izberite Case ActiveCell.HasFormula
Res je
Sporočilo = "ima formulo"
Drugi primer
Izberite številčno črko (ActiveCell)
Res je
Sporočilo = "ima številko"
Drugi primer
Sporočilo = "ima besedilo"
Konec Izberite
Konec Izberite
Konec Izberite
MsgBox “Cell” & ActiveCell.Address & “ “ & Msg
Končni sub
Logika je nekako takole:
Ugotovite, ali je celica prazna.
Če ni prazen, preverite, ali vsebuje formulo.
Če formule ni, ugotovite, ali vsebuje številsko vrednost ali besedilo.
Ko se rutina konča, spremenljivka Msg vsebuje niz, ki opisuje vsebino celice. Funkcija MsgBox prikaže to sporočilo.
Sporočilo, ki ga prikaže postopek CheckCell.
Strukture Select Case lahko ugnezdite tako globoko, kot je potrebno, vendar se prepričajte, da ima vsak stavek Select Case ustrezen stavek End Select.
Če še vedno niste prepričani, da je zamik kode vreden truda, je prejšnji seznam dober primer. Vdolbine so resnično jasne, da so ravni gnezdenja jasne. Oglejte si isti postopek brez vdolbine:
Sub CheckCell()
Zatemni sporočilo kot niz
Izberite Case Is Empty (ActiveCell)
Res je
Sporočilo = "je prazno."
Drugi primer
Izberite Case ActiveCell.HasFormula
Res je
Sporočilo = "ima formulo"
Drugi primer
Izberite številčno črko (ActiveCell)
Res je
Sporočilo = "ima številko"
Drugi primer
Sporočilo = "ima besedilo"
Konec Izberite
Konec Izberite
Konec Izberite
MsgBox “Cell” & ActiveCell.Address & “ “ & Msg
Končni sub
Precej nerazumljivo, kajne?