Struktūra „Select Case“ yra naudinga VBA struktūra priimant sprendimus, susijusius su trimis ar daugiau „Excel 2016“ parinkčių (nors ji taip pat veikia su dviem parinktimis, suteikdama alternatyvą „If-Then-Else“ struktūrai).
A Select Case pavyzdys
Šiame pavyzdyje parodyta, kaip naudoti struktūrą Select Case:
Sub ShowDiscount3()
Dim Kiekis Kol kas
Nedidelė nuolaida kaip dviguba
Kiekis = InputBox („Įveskite kiekį:“)
Pasirinkite Bylos kiekis
Atvejis nuo 0 iki 24
Nuolaida = 0,1
25–49 atvejis
Nuolaida = 0,15
50–74 atvejis
Nuolaida = 0,2
Atvejis yra >= 75
Nuolaida = 0,25
Pabaigos pasirinkimas
MsgBox „Nuolaida:“ & Nuolaida
Pabaigos sub
Šiame pavyzdyje vertinamas kintamasis Kiekis. Įprasti patikrinimai atliekami keturiais skirtingais atvejais (0–24, 25–49, 50–74 ir 75 ar daugiau).
Po kiekvieno atvejo teiginio gali būti bet koks teiginių skaičius, ir jie visi yra vykdomi, jei atvejis yra teisingas. Jei naudojate tik vieną teiginį, kaip šiame pavyzdyje, teiginį galite įrašyti toje pačioje eilutėje kaip raktinis žodis Case, prieš kurį rašomas dvitaškis – VBA teiginio skyriklio simbolis. Tai daro kodą kompaktiškesnį ir šiek tiek aiškesnį. Štai kaip rutina atrodo šiuo formatu:
Sub ShowDiscount4 ()
Dim Kiekis Kol kas
Nedidelė nuolaida kaip dviguba
Kiekis = InputBox („Įveskite kiekį:“)
Pasirinkite Bylos kiekis
0–24 atvejis: nuolaida = 0,1
25–49 atvejis: nuolaida = 0,15
50–74 atvejis: nuolaida = 0,2
Atvejis >= 75: Nuolaida = 0,25
Pabaigos pasirinkimas
MsgBox „Nuolaida:“ & Nuolaida
Pabaigos sub
Kai VBA vykdo struktūrą Select Case, struktūra išjungiama, kai tik VBA randa tikrąjį atvejį ir įvykdo to atvejo teiginius.
Įdėto pasirinkimo atvejo pavyzdys
Kaip parodyta kitame pavyzdyje, galite sudėti Select Case struktūras. Ši tvarka tiria aktyvų langelį ir parodo pranešimą, aprašantį langelio turinį. Atkreipkite dėmesį, kad procedūra turi tris Select Case struktūras ir kiekviena turi savo pabaigos pasirinkimo teiginį:
Papildomas tikrinimo langelis ()
Pritemdyti pranešimą kaip eilutę
Pasirinkite Case IsEmpty (ActiveCell)
Atvejis Tiesa
Msg = "yra tuščia".
Kitas atvejis
Pasirinkite Case ActiveCell.HasFormula
Atvejis Tiesa
Msg = "turi formulę"
Kitas atvejis
Pasirinkite Case Is Numeric (ActiveCell)
Atvejis Tiesa
Msg = "turi numerį"
Kitas atvejis
Žinutė = "yra tekstas"
Pabaigos pasirinkimas
Pabaigos pasirinkimas
Pabaigos pasirinkimas
MsgBox „Cell“ & ActiveCell.Address & „“ & Msg
Pabaigos sub
Logika skamba maždaug taip:
Sužinokite, ar langelis tuščias.
Jei jis nėra tuščias, pažiūrėkite, ar jame yra formulė.
Jei formulės nėra, išsiaiškinkite, ar joje yra skaitinė reikšmė, ar tekstas.
Kai rutina baigiasi, Msg kintamajame yra eilutė, apibūdinanti langelio turinį. „MsgBox“ funkcija rodo tą pranešimą.
Pranešimas, rodomas atliekant CheckCell procedūrą.
Galite įterpti „Select Case“ struktūras taip giliai, kiek jums reikia, tačiau įsitikinkite, kad kiekvienas „Select Case“ sakinys turi atitinkamą teiginį „End Select“.
Jei vis dar nesate įsitikinę, kad kodo įtrauka verta pastangų, ankstesnis sąrašas yra geras pavyzdys. Įtraukos tikrai tam, kad būtų aiškūs lizdų lygiai. Pažvelkite į tą pačią procedūrą be jokių įtraukų:
Papildomas tikrinimo langelis ()
Pritemdyti pranešimą kaip eilutę
Pasirinkite Case IsEmpty (ActiveCell)
Atvejis Tiesa
Msg = "yra tuščia".
Kitas atvejis
Pasirinkite Case ActiveCell.HasFormula
Atvejis Tiesa
Msg = "turi formulę"
Kitas atvejis
Pasirinkite Case Is Numeric (ActiveCell)
Atvejis Tiesa
Msg = "turi numerį"
Kitas atvejis
Žinutė = "yra tekstas"
Pabaigos pasirinkimas
Pabaigos pasirinkimas
Pabaigos pasirinkimas
MsgBox „Cell“ & ActiveCell.Address & „“ & Msg
Pabaigos sub
Gana nesuprantama, ar ne?