A Select Case struktúra egy hasznos VBA-struktúra az Excel 2016-ban három vagy több lehetőséget magában foglaló döntésekhez (bár két lehetőséggel is működik, alternatívát kínálva az If-Then-Else struktúra helyett).
A Select Case példa
A következő példa bemutatja a Select Case struktúra használatát:
Sub ShowDiscount3()
Dim Mennyiség Amíg
Dim kedvezmény Duplaként
Mennyiség = InputBox ("Adja meg a mennyiséget: ")
Válassza a Case Quantity lehetőséget
0-24. eset
Kedvezmény = 0,1
25-49. eset
Kedvezmény = 0,15
50-74. eset
Kedvezmény = 0,2
Az eset >= 75
Kedvezmény = 0,25
Vége kiválasztása
MsgBox “Kedvezmény: “ & Kedvezmény
Vége Sub
Ebben a példában a Mennyiség változó kiértékelése folyamatban van. A rutinszerű ellenőrzés négy különböző esetet (0–24, 25–49, 50–74 és 75 vagy nagyobb) vizsgál.
Minden Case utasítást tetszőleges számú állítás követhet, és mindegyik végrehajtásra kerül, ha az eset igaz. Ha csak egy utasítást használ, mint ebben a példában, akkor az utasítást ugyanabba a sorba helyezheti a Case kulcsszóval, amelyet kettőspont – a VBA utasításelválasztó karakter – előz meg. Ez kompaktabbá és egy kicsit áttekinthetőbbé teszi a kódot. Így néz ki a rutin ebben a formátumban:
Sub ShowDiscount4 ()
Dim Mennyiség Amíg
Dim kedvezmény Duplaként
Mennyiség = InputBox ("Adja meg a mennyiséget: ")
Válassza a Case Quantity lehetőséget
0–24. eset: Kedvezmény = 0,1
25-49. eset: Kedvezmény = 0,15
50-74. eset: Kedvezmény = 0,2
Eset >= 75: Kedvezmény = 0,25
Vége kiválasztása
MsgBox “Kedvezmény: “ & Kedvezmény
Vége Sub
Amikor a VBA végrehajt egy Select Case struktúrát, a struktúra kilép, amint a VBA igaz esetet talál, és végrehajtja az adott eset utasításait.
Egy beágyazott Select Case példa
Amint az a következő példában látható, beágyazhatja a Select Case struktúrákat. Ez a rutin megvizsgálja az aktív cellát, és megjelenít egy üzenetet, amely leírja a cella tartalmát. Figyelje meg, hogy az eljárásnak három Select Case struktúrája van, és mindegyiknek saját End Select utasítása van:
Sub CheckCell()
Dim Msg As String
Válassza a Case IsEmpty(ActiveCell) lehetőséget
Igaz eset
Msg = "üres."
Más eset
Válassza a Case ActiveCell.HasFormula lehetőséget
Igaz eset
Msg = "van egy képlete"
Más eset
Az esetszám kiválasztása (ActiveCell)
Igaz eset
Msg = "száma van"
Más eset
Msg = "szöveg van"
Vége kiválasztása
Vége kiválasztása
Vége kiválasztása
MsgBox „Cell” & ActiveCell.Address & „“ & Üzenet
Vége Sub
A logika valahogy így hangzik:
Nézze meg, hogy a cella üres-e.
Ha nem üres, nézze meg, hogy tartalmaz-e képletet.
Ha nincs képlet, nézze meg, hogy számértéket vagy szöveget tartalmaz-e.
Amikor a rutin véget ér, az Msg változó tartalmaz egy karakterláncot, amely leírja a cella tartalmát. Az MsgBox funkció megjeleníti ezt az üzenetet.

A CheckCell eljárás által megjelenített üzenet.
A Select Case struktúrákat olyan mélyre ágyazhatja be, amennyire csak szüksége van, de ügyeljen arra, hogy minden Select Case utasításnak legyen megfelelő End Select utasítása.
Ha még mindig nem vagy meggyőződve arról, hogy a kód behúzása megéri az erőfeszítést, az előző lista jó példaként szolgál. A bemélyedések valóban a fészkelő szintek egyértelművé tétele érdekében. Tekintse meg ugyanazt az eljárást behúzás nélkül:
Sub CheckCell()
Dim Msg As String
Válassza a Case IsEmpty(ActiveCell) lehetőséget
Igaz eset
Msg = "üres."
Más eset
Válassza a Case ActiveCell.HasFormula lehetőséget
Igaz eset
Msg = "van egy képlete"
Más eset
Az esetszám kiválasztása (ActiveCell)
Igaz eset
Msg = "száma van"
Más eset
Msg = "szöveg van"
Vége kiválasztása
Vége kiválasztása
Vége kiválasztása
MsgBox „Cell” & ActiveCell.Address & „“ & Üzenet
Vége Sub
Eléggé érthetetlen, mi?