Struktūra Select Case ir noderīga VBA struktūra lēmumu pieņemšanai, kas ietver trīs vai vairākas opcijas programmā Excel 2016 (lai gan tā darbojas arī ar divām opcijām, nodrošinot alternatīvu struktūrai If-Then-Else).
A Select Case piemērs
Šis piemērs parāda, kā izmantot struktūru Select Case:
Sub ShowDiscount3()
Dim Daudzums Tik ilgi
Dim atlaide kā dubultā
Daudzums = InputBox ("Ievadiet daudzumu: ")
Atlasiet Lietas daudzums
Gadījums no 0 līdz 24
Atlaide = 0,1
25. līdz 49. lieta
Atlaide = 0,15
Lieta no 50 līdz 74
Atlaide = 0,2
Gadījums ir >= 75
Atlaide = 0,25
Beigu atlase
MsgBox “Atlaide: “ & Atlaide
Beigu apakš
Šajā piemērā tiek novērtēts mainīgais daudzums. Regulāri tiek pārbaudīti četri dažādi gadījumi (0–24, 25–49, 50–74 un 75 vai vairāk).
Katram Case priekšrakstam var sekot jebkurš priekšrakstu skaits, un tie visi tiek izpildīti, ja gadījums ir patiess. Ja izmantojat tikai vienu priekšrakstu, kā tas ir šajā piemērā, varat ievietot priekšrakstu tajā pašā rindā ar atslēgvārdu Case, pirms tam ievietojot kolu — VBA priekšraksta atdalīšanas rakstzīmi. Tas padara kodu kompaktāku un nedaudz skaidrāku. Lūk, kā rutīna izskatās šajā formātā:
Sub ShowDiscount4 ()
Dim Daudzums Tik ilgi
Dim atlaide kā dubultā
Daudzums = InputBox ("Ievadiet daudzumu: ")
Atlasiet Lietas daudzums
Gadījums no 0 līdz 24: atlaide = 0,1
25. līdz 49. gadījums: atlaide = 0,15
50. līdz 74. gadījums: atlaide = 0,2
Gadījums ir >= 75: atlaide = 0,25
Beigu atlase
MsgBox “Atlaide: “ & Atlaide
Beigu apakš
Kad VBA izpilda struktūru Select Case, struktūra tiek aizvērta, tiklīdz VBA atrod patiesu gadījumu un izpilda šī gadījuma paziņojumus.
Ligzdots Select Case piemērs
Kā parādīts nākamajā piemērā, varat ligzdot Select Case struktūras. Šī rutīna pārbauda aktīvo šūnu un parāda ziņojumu, kas apraksta šūnas saturu. Ņemiet vērā, ka procedūrai ir trīs Select Case struktūras, un katrai no tām ir savs beigu atlases priekšraksts:
Sub CheckCell()
Dim Msg As String
Atlasiet Case IsEmpty (ActiveCell)
Gadījums True
Msg = "ir tukšs."
Cits gadījums
Atlasiet Case ActiveCell.HasFormula
Gadījums True
Msg = "ir formula"
Cits gadījums
Atlasiet reģistru IsNumeric (ActiveCell)
Gadījums True
Ziņa = "ir numurs"
Cits gadījums
Ziņa = "ir teksts"
Beigu atlase
Beigu atlase
Beigu atlase
MsgBox "Šūna" & ActiveCell.Address & "" & Msg
Beigu apakš
Loģika ir apmēram šāda:
Uzziniet, vai šūna ir tukša.
Ja tas nav tukšs, pārbaudiet, vai tajā ir formula.
Ja formulas nav, noskaidrojiet, vai tā satur skaitlisku vērtību vai tekstu.
Kad rutīna beidzas, mainīgais Msg satur virkni, kas apraksta šūnas saturu. Funkcija MsgBox parāda šo ziņojumu.
Paziņojums, kas tiek parādīts ar CheckCell procedūru.
Varat ligzdot Select Case struktūras tik dziļi, cik nepieciešams, taču pārliecinieties, vai katram priekšrakstam Select Case ir atbilstošs beigu atlases priekšraksts.
Ja joprojām neesat pārliecināts, ka koda atkāpe ir pūļu vērts, iepriekšējais saraksts kalpo kā labs piemērs. Ievilkumi patiešām ir, lai ligzdošanas līmeņi būtu skaidri. Apskatiet to pašu procedūru bez ievilkumiem:
Sub CheckCell()
Dim Msg As String
Atlasiet Case IsEmpty (ActiveCell)
Gadījums True
Msg = "ir tukšs."
Cits gadījums
Atlasiet Case ActiveCell.HasFormula
Gadījums True
Msg = "ir formula"
Cits gadījums
Atlasiet reģistru IsNumeric (ActiveCell)
Gadījums True
Ziņa = "ir numurs"
Cits gadījums
Ziņa = "ir teksts"
Beigu atlase
Beigu atlase
Beigu atlase
MsgBox "Šūna" & ActiveCell.Address & "" & Msg
Beigu apakš
Diezgan nesaprotami, vai ne?