Excel VBA Select Case Statement - selitetty esimerkeillä

Excel VBA: ssa on IF Then Else -rakenne, jonka avulla voit analysoida useita ehtoja ja suorittaa koodeja näiden ehtojen perusteella.

Toinen samanlainen rakenne, jonka avulla voit tarkistaa useita ehtoja, on VALITSE KOTELO lausunto.

Valitse tapaus on hyödyllinen, kun sinulla on vähintään kolme ehtoa, jotka haluat tarkistaa. Voit käyttää tätä myös kahdella ehdolla (mutta minusta If If Else on helpompi käyttää näissä tapauksissa).

Yksinkertainen esimerkki, jossa Valitse tapaus -lauseke on hyödyllinen, kun haluat saada oppilaan arvosanan hänen saamiensa pisteiden perusteella (käsitelty esimerkkinä myöhemmin tässä opetusohjelmassa).

Huomautus: Kaikki tässä opetusohjelmassa käsitellyt esimerkkikoodit on tarkoitettu sijoitettavaksi moduuliin VBA: ssa.

Valitse tapauksen syntaksi

Alla on Excel VBA: n Select Case -syntaksi:

Valitse Tapaustesti_Expression Case Value_1 Koodilohko, kun Test_Expression = Value_1 Case Value_2 Code Block when Test_Expression = Value_2 Case Value_3 Code Block when Test_Expression = Value_3 Case Else Code Block, kun mikään tapausehto ei täyty Loppu Valitse
  • Test_Expression: Tämä on lauseke, jonka arvon analysoimme käyttämällä eri tapauksia (selitetty paremmin alla olevilla esimerkeillä).
  • Ehto_1, Ehto_2,…: Nämä ovat ehtoja, joilla tekstin lauseke testataan. Jos se täyttää ehdon, annetun ehdon koodilohko suoritetaan.

Jokaisen käyttämäsi Select Case -lausekkeen kohdalla sinun on käytettävä End Select -lausetta.

merkintä: Heti kun ehto täyttyy, VBA poistuu valitun tapauksen rakenteesta. Joten jos sinulla on viisi ehtoa ja toinen ehto täyttyy, VBA poistuu Select Case - ja muita ehtoja ei testata.

Valitse tapausesimerkkejä

Ymmärtääksemme paremmin Select Case -lausekkeen käytön VBA: ssa, käydään läpi muutama esimerkki.

Huomaa, että useimmat tämän opetusohjelman esimerkit on tarkoitettu selittämään käsitettä. Nämä voivat olla tai eivät ole paras tapa tehdä työ.

Aloitetaan yksinkertaisella esimerkillä siitä, kuinka Select Case mahdollistaa ehtojen tarkistamisen.

Esimerkki 1 - Tarkista numerot

Alla olevassa esimerkissä koodi pyytää käyttäjää syöttämään minkä tahansa numeron väliltä 1–5 ja näyttää sitten viestiruudun, jossa on käyttäjän antama numero.

Sub CheckNumber () Dim UserInput kokonaislukuna UserInput = InputBox ("Anna numero väliltä 1-5") Valitse Case UserInput Case 1 MsgBox "Kirjoitit 1" Case 2 MsgBox "Kirjoitit 2" Case 3 MsgBox "Syötit 3" Tapaus 4 MsgBox "Syötit 4" Tapaus 5 MsgBox "Kirjoitit 5" End Valitse End Sub

Huomaa, että tämä koodi ei ole kaukana hyödyllisestä eikä edes hölmösuojattu. Jos esimerkiksi kirjoitat 6 tai minkä tahansa merkkijonon, se ei tee mitään. Mutta kuten mainitsin, tarkoitukseni on tässä esitellä, miten Select Case toimii.

Esimerkki 2 - Select Case -sovelluksen käyttö IS -ehdon kanssa

Voit tarkistaa numeroiden arvon Select Case -rakenteen kanssa käyttämällä IS -ehtoa.

Alla oleva koodi tarkistaa, onko syöttönumero suurempi kuin 100 vai ei.

Sub CheckNumber () Dim UserInput kokonaislukuna UserInput = InputBox ("Anna numero") Valitse tapaus UserInput Case Is = 100 MsgBox "Annoit numeron yli (tai yhtä suuri) 100" End Valitse End Sub

Esimerkki 3 - Muiden tapausten käyttäminen kaiken saamiseksi

Yllä olevassa esimerkissä käytin kahta ehtoa (alle 100 tai suurempi tai yhtä suuri kuin 100).

Toisen tapauksen sijaan, jossa on ehto, voit käyttää myös tapausta Else.

Case Else toimii kaikenkattavana, ja asia Else käsittelee kaikkea, mikä ei kuulu mihinkään aiemmista tapauksista.

Alla on esimerkkikoodi, jossa olen käyttänyt tapausta Else:

Sub CheckNumber () Dim UserInput kokonaislukuna UserInput = InputBox ("Anna numero") Valitse tapaus UserInput Case On <100 MsgBox "Annoit numeron, joka on alle 100" Case Else MsgBox "Kirjoitit luvun enemmän kuin ) 100 "End Valitse End Sub

Esimerkki 4 - Numeroalueen käyttäminen

Valitse tapaus -kohdassa voit myös tarkistaa numeroalueen.

Alla oleva koodi pyytää syötettä ja näyttää arvon perusteella viestiruudun.

Sub CheckNumber () Dim UserInput kokonaislukuna UserInput = InputBox ("Anna numero väliltä 1-100") Valitse tapaus UserInput Case 1 to 25 MsgBox "Annoit numeron alle 25" Case 26 to 50 MsgBox "Annoit numeron välillä 26 ja 50 "Asia 51 - 75 MsgBox" Syötit numeron välillä 51 ja 75 "Tapaus 75-100 MsgBox" Kirjoitit numeron yli 75 "Lopeta Valitse Loppuosa

Esimerkki 5 - Hanki arvosana pisteiden perusteella

Toistaiseksi olemme nähneet perusesimerkkejä (joista ei ole käytännössä käytännössä hyötyä).

Tässä on esimerkki, joka on lähempänä todellista esimerkkiä, jossa voit käyttää Select Case -ohjelmaa Excel VBA: ssa.

Seuraava koodi antaa arvosanan, jonka oppilas saa kokeen arvosanojen perusteella.

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

Yllä oleva koodi pyytää käyttäjältä arvosanoja ja näyttää sen perusteella lopullisen arvosanan sisältävän viestiruudun.

Yllä olevassa koodissa olen määrittänyt kaikki ehdot - merkeille 0-100.

Toinen tapa käyttää Select Case -koteloa on käyttää Case Else -laitetta lopussa. Tästä on hyötyä, kun olet kirjannut kaikki ehdot ja määrittänyt sitten, mitä tehdä, kun mikään ehdoista ei täyty.

Alla oleva koodi on luokan muunnelma pienellä muutoksella. Lopulta sillä on Case else -lauseke, joka suoritetaan, kun mikään yllä olevista ehdoista ei ole totta.

Sub CheckOddEven () Dim StudentMarks kokonaislukuna Dim FinalGrade merkkijonoina StudentMarks = InputBox ("Enter Marks") Valitse Case StudentMarks Case on <33 FinalGrade = "F" Case 33-50 FinalGrade = "E" Case 51-60 FinalGrade = "D "Case 60 to 70 FinalGrade =" C "Case 70 to 90 FinalGrade =" B "Case Else FinalGrade =" A "End Select MsgBox" The Grade is "& FinalGrade End Sub

Esimerkki 6 - Mukautetun toiminnon (UDF) luominen Select Case -sovelluksella

Yllä olevassa esimerkissä koodi pyysi käyttäjää syöttämään merkkejä.

Voit myös luoda mukautetun funktion (käyttäjän määrittämä toiminto), jota voidaan käyttää aivan kuten mitä tahansa tavallista laskentataulukkotoimintoa ja joka palauttaa oppilaiden arvosanan.

Alla on koodi, joka luo mukautetun kaavan:

Funktio GetGrade (StudentMarks kokonaislukuna) Dim FinalGrade merkkijonoina Valitse tapaus StudentMarks Tapaus on <33 FinalGrade = "F" Case 33-50 FinalGrade = "E" Case 51-60 FinalGrade = "D" Case 60 to 70 FinalGrade = "C" Tapaus 70-90 FinalGrade = "B" Case Else FinalGrade = "A" End Valitse GetGrade = FinalGrade End Function

Kun tämä koodi on moduulissa, voit käyttää laskentataulukon GetGrade -toimintoa alla olevan kuvan mukaisesti.

Esimerkki 7 - Tarkista ODD / EVEN valitsemalla Select Case

Alla on esimerkkikoodi, jossa tarkistan, onko solun A1 numero pariton vai parillinen.

Sub CheckOddEven () CheckValue = Range ("A1"). Value Select Case (CheckValue Mod 2) = 0 Case True MsgBox "Luku on parillinen" Case False MsgBox "Numero on pariton" End Select End Sub

Esimerkki 8 - Arkipäivän/viikonlopun tarkistaminen (useita ehtoja)

Voit myös valita Select Case -toiminnon useiden arvojen etsimiseen samassa tapauksessa.

Esimerkiksi alla oleva koodi näyttää nykyisen päivämäärän, onko tänään arkipäivä vai viikonloppu (jossa viikonloppupäivät ovat lauantai ja sunnuntai)

Sub CheckWeekday () Valitse Case Weekday (Nyt) Case 1, 7 MsgBox "Tänään on viikonloppu" Case Else MsgBox "Tänään on viikonpäivä" End Valitse End Sub

Yllä olevassa koodissa tarkistamme kaksi ehtoa (1 ja 7) samassa tapauksessa.

Huomaa: Viikonpäivätoiminto palauttaa 1 sunnuntaina ja 7 lauantaina.

Esimerkki 9 - Sisäkkäiset valitut tapauslausunnot

Voit myös liittää yhden Select Case -lausekkeen toiseen.

Alla on koodi, joka tarkistaa, onko päivä arkipäivä vai viikonloppu, ja jos se on viikonloppu, se näyttää, onko se lauantai vai sunnuntai.

Sub CheckWeekday () Valitse Case Weekday (Nyt) Case 1, 7 Valitse Case Weekday (Now) Case 1 MsgBox "Tänään on sunnuntai" Case Else MsgBox "Tänään on lauantai" Lopeta Valitse tapaus Muu MsgBox "Tänään on arkipäivä" End Select End Sub

Yllä olevassa koodissa olen liittänyt Select Case -kotelon tarkistamaan, onko viikonloppu lauantai vai sunnuntai.

Huomautus: Yllä oleva esimerkki selittää käsitteen. Tämä ei ole paras tai käytännöllisin tapa selvittää arkipäivä/viikonloppu.

Esimerkki 10 - Tekstimerkkijonon tarkistaminen valitulla kirjaimella

Voit tarkistaa tietyt merkkijonot Select Case -toiminnolla ja suorittaa sitten koodin sen perusteella.

Alla olevassa esimerkkikoodissa se pyytää käyttäjää syöttämään osastonsa nimen ja näyttää sen henkilön nimen, jonka kanssa hänen pitäisi ottaa yhteys käyttöönottoa varten.

Sub OnboardConnect () Dim -osasto merkkijonoosastona = InputBox ("Anna osastosi nimi") Valitse tapausosaston tapaus "Markkinointi" MsgBox "Ota yhteyttä Bob Rainesiin" Case "Finance" MsgBox "-palvelun ottamiseksi käyttöön Kotelo "HR" MsgBox "Ota yhteyttä Oliver Randiin, kun haluat ottaa käyttöön" Case "Admin" MsgBox "Ota yhteyttä Helen Humeen aloittaessasi" Case Else MsgBox "Ota yhteys Tony Randalliin, kun haluat ottaa käyttöön" End Select End Sub

Toivottavasti kaikista yllä olevista esimerkeistä oli hyötyä Select Case -käsitteen käsitteen ja sovelluksen ymmärtämisessä Excel VBA: ssa.

Saatat pitää myös seuraavista VBA -opetusohjelmista:

  • Excel VBA -silmukat - seuraavaksi, tee aikaa, tee kunnes, jokaiselle.
  • Seuraava kierros Excel VBA: ssa.
  • Makron tallentaminen Exceliin.

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave