Excel VBA kiválasztott esetjelentés - példákkal magyarázva

Az Excel VBA rendelkezik IF IF Else konstrukcióval, amellyel több feltételt elemezhet, és ezek alapján kódokat hajthat végre.

Egy másik hasonló konstrukció, amely lehetővé teszi több feltétel ellenőrzését, a ESET VÁLASZTÁSA nyilatkozat.

A Kiválasztott eset akkor hasznos, ha három vagy több feltétele van, amelyeket ellenőrizni szeretne. Ezt két feltétellel is használhatja (de úgy érzem, hogy a If Then Else könnyebben használható ilyen esetekben).

Egy egyszerű példa, ahol a Kiválasztott eset állítás hasznos, ha a tanuló érdemjegyeit az általa elért pontszámok alapján szeretné megkapni (példaként szerepel az oktatóanyag későbbi részében).

Megjegyzés: Az oktatóanyagban szereplő összes példakód a VBA egyik moduljában található.

Válassza ki a Szintaxis lehetőséget

Az alábbiakban a Kiválasztott eset szintaxisa látható az Excel VBA -ban:

Válassza ki az Esetteszt_Kifejezés Eset értéke_1 Kódblokkot, amikor Test_Expression = Érték_1 Esetérték_2 Kódblokk, amikor Test_Expression = Érték_2 Esetérték_3 Kódblokk, amikor Test_Expression = Érték_3 Eset Más kódblokk, ha egyik esetfeltétel sem teljesül Vége Kiválasztás
  • Test_Expression: Ez az a kifejezés, amelynek értékét különböző esetek használatával elemezzük (az alábbi példákkal jobban magyarázva).
  • Feltétel_1, Feltétel_2,…: Ezek azok a feltételek, amelyeken a szöveges kifejezést tesztelik. Ha megfelel a feltételnek, akkor az adott feltétel kódblokkja végrehajtásra kerül.

Minden használt Select Case utasításhoz használnia kell a End Select utasítást.

Jegyzet: Amint egy feltétel teljesül, a VBA kilép a kiválasztott eset konstrukciójából. Tehát ha öt feltétele van, és a második feltétel teljesül, a VBA kilép a Select Case -ből - és a többi feltétel nem kerül tesztelésre.

Válassza ki az esetpéldákat

Most, hogy jobban megértsük a Select Case utasítás használatát a VBA -ban, nézzünk meg néhány példát.

Vegye figyelembe, hogy az oktatóanyagban szereplő példák többsége a fogalom magyarázatát szolgálja. Lehet, hogy ez a legjobb módja a munka elvégzésének.

Kezdjük egy egyszerű példával, amelyből megtudhatjuk, hogy a Select Case hogyan teszi lehetővé a feltételek ellenőrzését.

1. példa - Ellenőrizze a számokat

Az alábbi példában a kód felkéri a felhasználót, hogy adjon meg 1 és 5 közötti számot, majd megjelenít egy üzenetmezőt a felhasználó által megadott számmal.

Sub CheckNumber () Dim UserInput mint Integer UserInput = InputBox ("Kérjük, adjon meg egy számot 1 és 5 között") Válassza ki a Case UserInput 1. eset MsgBox "Ön 1" esetet 2 MsgBox "Beírt 2" Case 3 MsgBox "Ön beírt 3" 4. eset MsgBox "Ön beírt 4" 5. eset MsgBox "Ön beírt 5" vége Válassza ki a vége al részt

Vegye figyelembe, hogy ez a kód messze nem hasznos, és nem is bolondbiztos. Például, ha 6 -ot vagy bármilyen karakterláncot ír be, az semmit sem ér. De ahogy említettem, itt az a szándékom, hogy bemutassam a Select Case működését.

2. példa - A Select Case használata IS feltétellel

Használhat IS feltételt a Select Case konstrukcióval a számok értékének ellenőrzéséhez.

Az alábbi kód ellenőrzi, hogy a bemeneti szám nagyobb -e 100 -nál vagy sem.

Sub CheckNumber () Dim UserInput mint Integer UserInput = InputBox ("Kérjük, adjon meg egy számot") Válassza ki az esetet UserInput Case Is = 100 MsgBox "Többet (vagy azzal egyenlő) adott meg"

3. példa - Más eset használata az összes elkapásához

A fenti példában két feltételt használtam (100 -nál kisebb vagy 100 -nál nagyobb vagy egyenlő).

A feltétellel ellátott második eset helyett használhatja a Case Else -t is.

A Case Else mindenre kiterjed, és mindent, ami nem tartozik a korábbi esetek közé, a Case Else kezeli.

Az alábbiakban egy példakódot találok, ahol Case Else -t használtam:

Sub CheckNumber () Dim UserInput mint Integer UserInput = InputBox ("Kérjük, adjon meg egy számot") Válassza ki az esetet UserInput Case <100 MsgBox "100 -nál kisebb számot adott meg" Case Else MsgBox "Többet (vagy egyenlőt adott meg ) 100 "Vége Válassza ki a Vég al

4. példa - Számtartomány használata

A Kiválasztott esetben a számtartományt is ellenőrizheti.

Az alábbi kód bevitelt kér, és az érték alapján üzenetmezőt jelenít meg.

Sub CheckNumber () Dim UserInput mint Integer UserInput = InputBox ("Kérjük, adjon meg egy számot 1 és 100 között") Válassza ki a Case UserInput esetet 1 -től 25 -ig MsgBox "25 -nél kisebb számot adott meg" Case 26 - 50 MsgBox "Számot adott meg 26 és 50 között "51. eset - 75 MsgBox" 51 és 75 közötti számot adott meg.

5. példa - Szerezze meg az osztályzatot a pontozott pontok alapján

Eddig alapvető példákat láttunk (amelyek a gyakorlati világban nem igazán hasznosak).

Íme egy példa, amely közelebb áll a valós példához, ahol a Kiválasztott esetet használhatja az Excel VBA-ban.

A következő kód megadja azt a minősítést, amelyet a tanuló a vizsgán elért pontszámok alapján kap.

Sub Grade () Dim StudentMarks as Integer Dim FinalGrade as String StudentMarks = InputBox ("Enter Marks") Select Case StudentMarks Case Is <33 FinalGrade = "F" Case 33 to 50 FinalGrade = "E" Case 51 to 60 FinalGrade = "D "60. -70. Eset FinalGrade =" C "eset 70-90 FinalGrade =" B "eset 90-100 FinalGrade =" A "End Select MsgBox" The Grade is "& FinalGrade End Sub

A fenti kód a felhasználótól kéri a jelöléseket, és ennek alapján üzenetdobozt mutat a végső osztályzattal.

A fenti kódban megadtam az összes feltételt - a 0 - 100.

A Select Case használatának másik módja az, hogy a végén egy Case Case -t használ. Ez akkor hasznos, ha az összes feltételt elszámolta, majd meghatározza, hogy mit kell tennie, ha egyik feltétel sem teljesül.

Az alábbi kód az Osztálykód változata, kisebb módosítással. Végül van egy Case else utasítás, amelyet akkor hajtanak végre, ha a fenti feltételek egyike sem teljesül.

Sub CheckOddEven () Dim StudentMarks Integer Dim FinalGrade mint String StudentMarks = InputBox ("Enter Marks") Case Case StudentMarks Eset kiválasztása <33 FinalGrade = "F" Case 33 to 50 FinalGrade = "E" Case 51 to 60 FinalGrade = "D "60. -70. Eset FinalGrade =" C "eset 70-90 FinalGrade =" B "Case Else FinalGrade =" A "End Select MsgBox" The Grade is "& FinalGrade End Sub

6. példa - Egyéni függvény (UDF) létrehozása a Kiválasztott eset használatával

A fenti példában a kód a felhasználótól kérte a jelzések bevitelét.

Létrehozhat egy egyéni függvényt (Felhasználó által definiált függvény) is, amely ugyanúgy használható, mint bármely normál munkalap funkció, és amely visszaadja a tanulók osztályzatát.

Az alábbi kód az egyéni képletet hozza létre:

Funkció GetGrade (StudentMarks mint egész) Dim FinalGrade mint karakterlánc Válassza ki a StudentMarks esetet <33 FinalGrade = "F" Eset 33-50 FinalGrade = "E" eset 51-60 FinalGrade = "D" 60-60 eset FinalGrade = "C" 70–90. Eset FinalGrade = "B" eset Else FinalGrade = "A" End Select GetGrade = FinalGrade End Function

Ha megvan ez a kód a modulban, használhatja a GetGrade funkciót a munkalapon, az alábbiak szerint.

Példa 7 - Ellenőrizze az ODD / EVEN funkciót a Select Case használatával

Az alábbiakban egy példakódot találok, ahol ellenőrzöm, hogy az A1 cella száma páratlan vagy páros.

Sub CheckOddEven () CheckValue = Range ("A1"). Value Select Case (CheckValue Mod 2) = 0 Case True MsgBox "A szám páros" Case False MsgBox "A szám páratlan" End Select End Sub

8. példa - Hétköznap/hétvége ellenőrzése (több feltétel)

A Kiválasztott eset használatával is ellenőrizhet több értéket ugyanabban az esetben.

Például az alábbi kód az aktuális dátumot használja annak megjelenítésére, hogy ma hétköznap vagy hétvége van (ahol a hétvégi napok szombat és vasárnap)

Sub CheckWeekday () Válassza ki az esetet Hétköznap (most) 1., 7. eset MsgBox "Ma hétvége" Eset Más MsgBox "Ma hétköznap" Vége Válassza ki a Vége al részt

A fenti kódban két feltételt (1 és 7) vizsgálunk ugyanabban az esetben.

Megjegyzés: A hétköznapi funkció vasárnap 1 -et, szombaton 7 -et ad vissza.

9. példa - Beágyazott kiválasztott esetek nyilatkozatai

A Select Case utasításokat is beágyazhatja a másikba.

Az alábbiakban egy kód található, amely ellenőrzi, hogy egy nap hétköznap vagy hétvége, és ha hétvége, akkor megjeleníti, hogy szombat vagy vasárnap.

Sub CheckWeekday () Válassza ki a Case Weekday (most) 1., 7. esetet. Válassza a Case Weekday (Most) 1. esetet MsgBox "Ma vasárnap" Case Else MsgBox "Ma szombat" End End Case Case Else MsgBox "Today is a Weekday" End Select End Alatti

A fenti kódba beágyaztam a Select Case -t, hogy ellenőrizzem, hogy a hétvége szombat vagy vasárnap.

Megjegyzés: A fenti példa a fogalom magyarázatát szolgálja. Ez nem a legjobb vagy legpraktikusabb módja annak, hogy megtudja a hétköznapokat/hétvégéket.

10. példa - Szöveg karakterláncának ellenőrzése kis- és nagybetűvel

A Select Case használatával ellenőrizheti az adott karakterláncokat, majd ennek alapján végrehajthatja a kódot.

Az alábbi példakódban arra kéri a felhasználót, hogy írja be osztályának nevét, és megmutatja annak a személynek a nevét, akivel kapcsolatba kell lépni a bevezetéshez.

Sub OnboardConnect () Dim Department as String Department = InputBox ("Írja be osztályának nevét") Válassza ki az ügyosztályi esetet "Marketing" MsgBox "Kérjük, lépjen kapcsolatba Bob Raines -nel az" Case "Finance" MsgBox "bevezetése érdekében. „HR” MsgBox ügy

Reméljük, hogy a fenti példák segítettek megérteni a Select Case koncepcióját és alkalmazását az Excel VBA -ban.

A következő VBA oktatóanyagok is tetszhetnek:

  • Excel VBA hurkok - Következő, csináld amíg, addig csináld, mindegyikért.
  • A következő ciklushoz az Excel VBA -ban.
  • Makró rögzítése Excelben.

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave