Az Excel VBA rendelkezik az IF Akkor más konstrukcióval, amellyel több feltételt elemezhet és kódokat futtathat ezen feltételek alapján.
Egy másik hasonló konstrukció, amely lehetővé teszi több feltétel ellenőrzését, a SELECT CASE utasítás.
A Select Case akkor hasznos, ha három vagy több kívánt feltétel van. ellenőrizni. Ezt két feltétellel is használhatja (de úgy gondolom, hogy az Ezután az Egyebet könnyebb használni ezekben az esetekben).
Egy egyszerű példa, ahol az Eset kiválasztása utasítás hasznos, ha meg szeretné kapni a hallgató az általa megszerzett jegyek alapján (a bemutató későbbi példája).
Megjegyzés: Az ebben az oktatóanyagban szereplő összes példakód a VBA moduljában található.
Ez az oktatóanyag kiterjed:
Kiválasztja a kis- és nagybetűk szintaxisát
Az alábbiakban bemutatjuk a Kiválasztott eset szintaxisát az Excel-ben VBA:
Select Case Test_ExpressionCase Value_1Code Block when Test_Expression = Value_1Case Value_2Code Block when Test_Expression = Value_2Case Value_3Code Block when Test_Expression = Value_3Case ElseCode Block when none of the case conditions are metEnd Select
- Test_Expression: Ez az a kifejezés, amelynek értékét különféle esetek felhasználásával elemezzük (jobban megmagyarázzuk az alábbi példákkal).
- Feltétel_1, Feltétel_2,…: Ezeken a feltételeken tesztelik a szövegkifejezést. 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 az End Select utasítást kell használnia.
Esettanulmány-példák kiválasztása
Most hogy jobban megértsük a Select Case utasítás használatát a VBA-ban, nézzünk át néhány példát.
Ne feledje, hogy a bemutatóban szereplő legtöbb példa a koncepció magyarázatára szolgál. Lehetséges, hogy nem ez a legjobb módja a munka elvégzésének.
Kezdjük egy egyszerű példával, hogy a Select Case lehetővé teszi-e a feltételek ellenőrzését.
1. példa – Ellenőrizze a számokat
Az alábbi példában a kód arra kéri a felhasználót, hogy adjon meg bármilyen számot 1 és 5 között, majd megjelenik egy üzenetmező a felhasználó által megadott számmal.
Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number between 1 and 5")Select Case UserInputCase 1MsgBox "You entered 1"Case 2MsgBox "You entered 2"Case 3MsgBox "You entered 3"Case 4MsgBox "You entered 4"Case 5MsgBox "You entered 5"End SelectEnd Sub
Ne feledje, hogy ez a kód korántsem hasznos, és nem is bolondbiztos. Például, ha 6-at vagy bármilyen karakterláncot ír be, az semmit sem tenne. De mint említettem, itt szándékozom bemutatni a Select Case működését.
2. példa – Select Case használata IS feltételekkel
Használhat IS feltételeket a Select Case konstrukcióval hogy ellenőrizze a számok értékét.
Az alábbi kód ellenőrzi, hogy a bevitt szám nagyobb-e, mint 100.
Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number")Select Case UserInputCase Is < 100MsgBox "You entered a number less than 100"Case Is >= 100MsgBox "You entered a number more than (or equal to) 100"End SelectEnd Sub
Példa 3 – A más esetek használata az összes befogására
A fenti példában két feltételt használtam (100-nál kisebb vagy 100-nál nagyobb vagy egyenlő).
A második eset helyett feltétel, használhatja a Case Else-t is.
A Case Else összeszedő szerepet tölt be, és a Case Else minden olyan dolgot kezel, amely nem tartozik az előző esetek egyikébe.
Az alábbiakban egy példakód található, ahol más esetet használtam:
Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number")Select Case UserInputCase Is < 100MsgBox "You entered a number less than 100"Case ElseMsgBox "You entered a number more than (or equal to) 100"End SelectEnd Sub
4. példa – Számtartomány használata
In Select Esetként számtartományt is ellenőrizhet.
Az alábbi kód bevitelt kér, és az érték alapján üzenetdobozt mutat.
Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number between 1 and 100")Select Case UserInputCase 1 To 25MsgBox "You entered a number less than 25"Case 26 To 50MsgBox "You entered a number between 26 and 50"Case 51 To 75MsgBox "You entered a number between 51 and 75"Case 75 To 100MsgBox "You entered a number more than 75"End SelectEnd Sub
5. példa – Szerezd meg az osztályzatot a pontozott jegyek alapján
Eddig láttunk alapvető példákat (amelyek a gyakorlati világban nem igazán hasznosak).
Itt van egy példa, amely közelebb áll egy olyan valós példához, ahol az Esetek kiválasztása funkciót használhatja az Excel VBA-ban.
A következő kód megadja neked azt az osztályzatot, amely alapján a hallgató eljut. a vizsga jegyei.
A fenti kód a felhasználótól kéri a jegyeket, és ez alapján egy üzenetmezőt jelenít meg az utolsó osztályzattal.
A fenti kódban megadta az összes feltételt – a 0 – 100 jeleknél.
A Select Case használatának másik módja a Case Case használata. Ez akkor hasznos, ha figyelembe veszi az összes feltételt, majd meghatározza, hogy mit kell tennie, ha egyik feltétel sem teljesül.
Az alábbi kód a Grade kód variációja kisebb változtatásokkal. Végül rendelkezik egy Case else utasítással, amelyet akkor hajtanak végre, ha a fenti feltételek egyike sem teljesül.
6. példa – Egyedi funkció (UDF) létrehozása a Select Case használatával
A fenti példában a kód a felhasználótól kérte a jelek bevitelét.
Létrehozhat egy olyan egyedi függvényt is (Felhasználó által definiált függvény), amely ugyanúgy használható, mint bármely szokásos munkalapfüggvény, és amely visszatér a tanulók osztályzata.
Az alábbiakban látható az a kód, amely létrehozza az egyéni képletet:
Function GetGrade(StudentMarks As Integer)Dim FinalGrade As StringSelect Case StudentMarksCase Is < 33FinalGrade = "F"Case 33 To 50FinalGrade = "E"Case 51 To 60FinalGrade = "D"Case 60 To 70FinalGrade = "C"Case 70 To 90FinalGrade = "B"Case ElseFinalGrade = "A"End SelectGetGrade = FinalGradeEnd Function
Miután megadta ezt a kódot a modulban a GetGrade függvényt használhatja a munkalapon, az alábbiak szerint.
7. példa – Ellenőrizze az ODD / EVEN elemet a Kiválasztás esetén
Az alábbiakban egy példakód található, ahol ellenőrizze, hogy az A1 cellában lévő szám páratlan-e vagy páros-e.
8. példa – Hétköznap / hétvége (több feltétel) ellenőrzése
Az Eset kiválasztása használatával több értéket is ellenőrizhet a ugyanaz az eset.
Például az alábbi kód az aktuális dátumot használja annak megmutatására, hogy ma hétköznap vagy hétvége van-e (ahol hétvégi napok szombat és vasárnap)
Sub CheckWeekday()Select Case Weekday(Now)Case 1, 7MsgBox "Today is a Weekend"Case ElseMsgBox "Today is a Weekday"End SelectEnd Sub
A fenti kódban két feltételt (1 és 7) ellenőrizünk ugyanabban az esetben.
Megjegyzés: A Hétköznap függvény 1-et ad vissza vasárnapra és 7-et szombatra.
9. példa – Beágyazott esetkivonatok beágyazása
Egy kiválasztott eset-mondatot is beágyazhat a másikba.
Az alábbiakban egy olyan kód található, amely ellenőrzi, hogy egy nap hétköznap-e vagy sem. hétvége, és ha hétvége, akkor megjelenik, hogy szombatról vagy vasárnapról van-e szó.
Sub CheckWeekday()Select Case Weekday(Now)Case 1, 7 Select Case Weekday(Now) Case 1 MsgBox "Today is Sunday" Case Else MsgBox "Today is Saturday" End SelectCase ElseMsgBox "Today is a Weekday"End SelectEnd Sub
A fenti kódban Beágyaztam a Select Case-t annak ellenőrzésére, hogy a hétvége szombat vagy vasárnap-e.
Megjegyzés: A fenti példa a koncepció magyarázatára szolgál. Ez nem a legjobb vagy a legpraktikusabb módszer a hétköznapok / hétvégék megismerésére.
10. Példa – Szöveges karakterláncok ellenőrzése válogatott esetekkel
Meghatározott karakterláncokat ellenőrizhet a Kiválasztás és a Választás használatával végrehajtja a kódot ennek alapján.
Az alábbi példakódban arra kéri a felhasználót, hogy adja meg részlegének nevét, és megmutatja annak a személynek a nevét, akivel kapcsolatba kell lépnie a fedélzeten.
Sub OnboardConnect()Dim Department As StringDepartment = InputBox("Enter Your Department Name")Select Case DepartmentCase "Marketing"MsgBox "Please connect with Bob Raines for Onboarding"Case "Finance"MsgBox "Please connect with Patricia Cruz for Onboarding"Case "HR"MsgBox "Please connect with Oliver Rand for Onboarding"Case "Admin"MsgBox "Please connect with Helen Hume for Onboarding"Case ElseMsgBox "Please connect with Tony Randall for Onboarding"End SelectEnd Sub
Remélem, hogy az összes fenti példa hasznos volt a Select Case koncepciójának és alkalmazásának megértésében az Excel VBA-ban.
A következő VBA oktatóanyagok is tetszhetnek:
- Excel VBA hurkok – a következő, a Csináld, a Csináld, mindaddig.
- A következő hurok az Excel VBA-ban.
- Makró rögzítése Excel.