„Excel VBA“ pasirinkimo atvejo ataskaita - paaiškinta pavyzdžiais

„Excel VBA“ turi IF IF Else konstrukciją, kurią galite naudoti analizuodami kelias sąlygas ir vykdydami kodus pagal šias sąlygas.

Kita panaši konstrukcija, leidžianti patikrinti kelias sąlygas, yra PASIRINKTI DĖŽUTĘ pareiškimas.

Pasirinkti atvejį yra naudinga, kai turite tris ar daugiau sąlygų, kurias norite patikrinti. Taip pat galite tai naudoti su dviem sąlygomis (bet manau, kad tais atvejais, jei tada būtų lengviau naudoti).

Paprastas pavyzdys, kai teiginys „Pasirinkti atvejį“ yra naudingas, kai norite gauti mokinio pažymį pagal pažymius, kuriuos jis/ji surinko (kaip pavyzdys vėliau šioje pamokoje).

Pastaba: visi šioje pamokoje aprašyti pavyzdiniai kodai yra skirti įdėti į modulį VBA.

Pasirinkite atvejo sintaksę

Žemiau yra pasirinkimo atvejo sintaksė „Excel VBA“:

Pasirinkite atvejo testą_ išraiškos atvejo reikšmė_1 kodo blokas, kai Test_Expression = Value_1 atvejo reikšmė_2 kodo blokas, kai Test_Expression = Value_2 atvejo reikšmė_3 kodo blokas, kai Test_Expression = Value_3 atvejis Kitas kodas Blokas, kai nėra įvykdytos nė vienos atvejo sąlygos Pabaiga
  • Test_Expression: tai išraiška, kurios vertę analizuojame naudodami skirtingus atvejus (geriau paaiškinta toliau pateiktais pavyzdžiais).
  • Sąlyga_1, Sąlyga_2,…: tai yra sąlygos, kuriomis tikrinama teksto išraiška. Jei jis atitinka sąlygą, tada vykdomas nurodytos sąlygos kodo blokas.

Kiekvienam naudojamam „Select Case“ teiginiui turite naudoti „End Select“ teiginį.

Pastaba: Kai tik įvykdoma sąlyga, VBA išeina iš pasirinkto atvejo konstrukcijos. Taigi, jei turite penkias sąlygas ir įvykdyta antroji sąlyga, VBA išeis iš pasirinkto atvejo - o likusios sąlygos nebus išbandytos.

Pasirinkite atvejo pavyzdžius

Dabar, kad geriau suprastume, kaip naudoti „Select Case“ pareiškimą VBA, peržvelkime keletą pavyzdžių.

Atminkite, kad dauguma šios pamokos pavyzdžių yra skirti paaiškinti sąvoką. Tai gali būti arba ne geriausias būdas atlikti darbą.

Pradėkime nuo paprasto pavyzdžio, kaip „Select Case“ leidžia patikrinti sąlygas.

1 pavyzdys - patikrinkite skaičius

Toliau pateiktame pavyzdyje kodas prašo vartotojo įvesti bet kurį skaičių nuo 1 iki 5, tada rodomas pranešimų langelis su vartotojo įvestu numeriu.

Sub CheckNumber () Dim UserInput kaip Integer UserInput = InputBox ("Įveskite skaičių nuo 1 iki 5") Pasirinkite atvejį UserInput 1 atvejis MsgBox "Jūs įvedėte 1" 2 atvejis MsgBox "Jūs įvedėte 2" Case 3 MsgBox "Jūs įvedėte 3" 4 atvejis MsgBox "Jūs įvedėte 4" 5 atvejis MsgBox "Įvedėte 5" pabaiga Pasirinkite pabaigos sub

Atminkite, kad šis kodas toli gražu nėra naudingas ir net nėra patikimas. Pvz., Jei įvesite 6 ar bet kurią eilutę, tai nieko nepadarys. Bet kaip jau minėjau, čia ketinu parodyti, kaip veikia „Select Case“.

2 pavyzdys. Pasirinkto atvejo naudojimas su IS sąlyga

Norėdami patikrinti skaičių reikšmę, galite naudoti IS sąlygą su „Select Case“ konstrukcija.

Žemiau pateiktas kodas patikrina, ar įvesties skaičius yra didesnis nei 100, ar ne.

Sub CheckNumber () Dim UserInput kaip Integer UserInput = InputBox ("Įveskite skaičių") Pasirinkite atvejį UserInput Case Is = 100 MsgBox "Įvedėte skaičių daugiau nei (arba lygus) 100" Pabaiga Pasirinkite pabaigos sub

3 pavyzdys. Naudojant atvejį „Visa kita“, kad gautumėte viską

Pirmiau pateiktame pavyzdyje aš naudojau dvi sąlygas (mažiau nei 100 arba didesnę arba lygią 100).

Vietoj antrojo atvejo su sąlyga taip pat galite naudoti „Case Else“.

„Case Else“ veikia kaip visa apimanti priemonė ir viskas, kas nepatenka į ankstesnes bylas, yra nagrinėjama kitoje byloje.

Žemiau yra pavyzdinis kodas, kuriame naudoju „Case Else“:

Sub CheckNumber () Dim UserInput kaip Integer UserInput = InputBox ("Įveskite skaičių") Pasirinkite atvejį UserInput Case yra <100 MsgBox "Įvedėte skaičių, mažesnį nei 100" Case Else MsgBox "Įvedėte skaičių daugiau nei (arba lygu ) 100 "pabaiga Pasirinkite pabaigos sub

4 pavyzdys. Skaičių diapazono naudojimas

Pasirinkę atvejį taip pat galite patikrinti skaičių diapazoną.

Žemiau pateiktas kodas prašo įvesties ir parodo pranešimų laukelį pagal vertę.

Sub CheckNumber () Dim UserInput kaip Integer UserInput = InputBox („Įveskite skaičių nuo 1 iki 100“) Pasirinkite atvejį UserInput 1–25 atvejai „MsgBox“ „Įvedėte skaičių, mažesnį nei 25“ Byla nuo 26 iki 50 „MsgBox“ Įvedėte numerį tarp 26 ir 50 "atvejis nuo 51 iki 75" MsgBox "Įvedėte skaičių nuo 51 iki 75" atvejis nuo 75 iki 100 "MsgBox" Įvedėte skaičių daugiau nei 75 "Pabaiga Pasirinkite pabaigos dalį

5 pavyzdys - gaukite įvertinimą pagal įvertintus ženklus

Iki šiol matėme pagrindinius pavyzdžius (kurie praktiškai nėra labai naudingi).

Štai pavyzdys, artimesnis realaus pasaulio pavyzdžiui, kuriame galite naudoti „Select Case“ „Excel VBA“.

Šis kodas suteiks jums įvertinimą, kurį mokinys gauna pagal egzamino pažymius.

Sub klasė () Dim StudentMarks kaip sveikasis skaičius FinalGrade kaip eilutė StudentMarks = InputBox ("Enter Marks") Pasirinkite atvejį StudentMarks Byla yra <33 FinalGrade = "F" atvejis nuo 33 iki 50 FinalGrade = "E" atvejis nuo 51 iki 60 FinalGrade = "D "Byla nuo 60 iki 70 FinalGrade =" C "Byla nuo 70 iki 90 FinalGrade =" B "Byla nuo 90 iki 100 FinalGrade =" A "End Select MsgBox" The Grade is "& FinalGrade End Sub

Aukščiau pateiktas kodas prašo vartotojo pažymių ir, remdamasis juo, rodo pranešimų langelį su galutiniu pažymiu.

Pirmiau pateiktame kode nurodiau visas sąlygas - 0–100 ženklų.

Kitas būdas naudoti „Select Case“ yra naudoti kitą atvejį pabaigoje. Tai naudinga, kai apskaitėte visas sąlygas ir nurodote, ką daryti, kai nė viena iš sąlygų nėra įvykdyta.

Žemiau pateiktas kodas yra laipsnio kodo variantas su nedideliu pakeitimu. Galų gale, jame yra „Case else“ teiginys, kuris bus įvykdytas, kai nė viena iš aukščiau išvardytų sąlygų nebus įvykdyta.

Sub CheckOddEven () Dim StudentMarks kaip sveikas skaičius Dim FinalGrade kaip eilutė StudentMarks = InputBox ("Enter Marks") Pasirinkite atvejį StudentMarks Byla yra <33 FinalGrade = "F" atvejis nuo 33 iki 50 FinalGrade = "E" atvejis nuo 51 iki 60 FinalGrade = "D "Byla nuo 60 iki 70 FinalGrade =" C "Byla nuo 70 iki 90 FinalGrade =" B "Byla Else FinalGrade =" A "Pabaiga Pasirinkite MsgBox" Įvertinimas yra "ir" FinalGrade End Sub "

6 pavyzdys. Tinkintos funkcijos (UDF) sukūrimas naudojant pasirinktą atvejį

Pirmiau pateiktame pavyzdyje kodas paprašė vartotojo įvesti ženklus.

Taip pat galite sukurti pasirinktinę funkciją (vartotojo apibrėžta funkcija), kurią galima naudoti kaip ir bet kurią įprastą darbalapio funkciją ir kuri grąžins mokinių pažymius.

Žemiau yra kodas, kuris sukurs tinkintą formulę:

Funkcija „GetGrade“ („StudentMarks“ kaip sveikasis skaičius) „Dim FinalGrade“ kaip eilutė Pasirinkite atvejį „StudentMarks“ atvejis yra <33 FinalGrade = "F" atvejis nuo 33 iki 50 FinalGrade = "E" atvejis nuo 51 iki 60 FinalGrade = "D" atvejis nuo 60 iki 70 FinalGrade = "C" 70–90 atvejis FinalGrade = "B" atvejis Else FinalGrade = "A" Pabaiga Pasirinkite GetGrade = FinalGrade pabaigos funkcija

Turėdami šį kodą modulyje, galite naudoti funkciją „GetGrade“ darbalapyje, kaip parodyta žemiau.

7 pavyzdys. Patikrinkite ODD / EVEN su pasirinktu atveju

Žemiau yra kodo pavyzdys, kuriame tikrinu, ar A1 langelyje esantis skaičius yra nelyginis ar lyginis.

Sub CheckOddEven () CheckValue = Range ("A1"). Value Select Case (CheckValue Mod 2) = 0 Case True MsgBox "Skaičius lygus" Case False MsgBox "Skaičius nelyginis" Pabaiga Pasirinkite pabaigą

8 pavyzdys. Darbo dienos/savaitgalio tikrinimas (kelios sąlygos)

Taip pat galite naudoti „Select Case“, kad patikrintumėte kelias reikšmes toje pačioje byloje.

Pavyzdžiui, toliau pateiktas kodas naudoja dabartinę datą, kad parodytų, ar šiandien yra darbo diena, ar savaitgalis (kai savaitgalio dienos yra šeštadienis ir sekmadienis)

Sub CheckWeekday () Pasirinkite atvejį Savaitės diena (dabar) 1, 7 atvejis „MsgBox“ „Šiandien yra savaitgalis“ „Case Else MsgBox“ Šiandien yra darbo diena “Pabaiga Pasirinkite pabaigos dalį

Pirmiau pateiktame kode mes patikriname, ar nėra dviejų sąlygų (1 ir 7) tuo pačiu atveju.

Pastaba: savaitės funkcija grąžina 1 sekmadienį ir 7 šeštadienį.

9 pavyzdys. Įterptųjų pasirinktų atvejų pareiškimai

Taip pat galite įterpti vieną „Select Case“ pareiškimą kitame.

Žemiau yra kodas, kuris tikrina, ar diena yra darbo diena, ar savaitgalis, o jei savaitgalis, tada bus rodoma, ar tai šeštadienis, ar sekmadienis.

Sub CheckWeekday () Select Case Weekday (Now) Case 1, 7 Select Case Weekday (Now) Case 1 MsgBox "Today is Sunday" Case Else MsgBox "Šiandien yra šeštadienis" End Select Case Else MsgBox "Today is a weekday" End Select End Sub

Pirmiau pateiktame kode įterpiau „Select Case“, kad patikrintų, ar savaitgalis yra šeštadienis, ar sekmadienis.

Pastaba: aukščiau pateiktas pavyzdys paaiškina sąvoką. Tai nėra geriausias ar praktiškiausias būdas sužinoti darbo dieną/savaitgalį.

10 pavyzdys - teksto eilutės tikrinimas pasirinkus didžiosios ir mažosios raidės

Galite patikrinti konkrečias eilutes naudodami „Select Case“ ir tada vykdyti kodą pagal tai.

Toliau pateiktame kodo pavyzdyje jis prašo vartotojo įvesti savo skyriaus pavadinimą ir parodo asmens, su kuriuo jis turėtų prisijungti prisijungdamas, vardą.

Sub OnboardConnect () Dim departamentas kaip eilutės skyrius = InputBox („Įveskite savo skyriaus pavadinimą“) Pasirinkite atvejo skyriaus atvejį „Rinkodara“ „MsgBox“ Prašome susisiekti su Bobu Rainesu, kad būtų įtrauktas „Case“ Finance “MsgBox„ Norėdami prisijungti, susisiekite su Patricia Cruz “ Dėklas „HR“ „MsgBox“ Norėdami prisijungti prie „Case“ administratoriaus, prašome susisiekti su Oliver Rand „Case“ Admin “MsgBox“ Prašome prisijungti prie Helen Hume, skirtos „Case Else MsgBox“ prisijungimui. Norėdami prisijungti, susisiekite su Tony Randall „End Select End Sub

Tikimės, kad visi aukščiau pateikti pavyzdžiai padėjo suprasti „Select Case“ koncepciją ir taikymą „Excel VBA“.

Jums taip pat gali patikti šios VBA pamokos:

  • „Excel VBA“ kilpos - kitam, darykite, darykite iki, kiekvienam.
  • Kitas ciklas „Excel VBA“.
  • Kaip įrašyti makrokomandą „Excel“.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave