Izjava o slučaju odabira Excel VBA - objašnjeno s primjerima

Excel VBA ima konstrukciju IF Then Else koju možete koristiti za analizu više uvjeta i izvršavanje kodova na temelju ovih uvjeta.

Drugi sličan konstrukt koji vam omogućuje provjeru više uvjeta je ODABERI SLUČAJ izjava.

Odabir slučaja koristan je ako imate tri ili više uvjeta koje želite provjeriti. Također možete koristiti ovo s dva uvjeta (ali osjećam da je u tom slučaju lakše koristiti Else).

Jednostavan primjer gdje je izjava Odabir slučaja korisna kada želite dobiti ocjenu učenika na temelju ocjena koje je on/ona postigao (kao primjer kasnije u ovom vodiču).

Napomena: Svi primjeri kodova obuhvaćeni ovim vodičem namijenjeni su postavljanju u modul u VBA.

Odaberite Sintaksa velikih i malih slova

Ispod je sintaksa Select Case u Excel VBA:

Odaberite Case Test_Expression Case Value_1 Kodni blok kada je Test_Expression = Vrijednost_1 Vrijednost slučaja_2 Kôdni blok kada je Test_Expression = Vrijednost_2 Vrijednost slučaja_3 Kodirani blok kada Test_Expression = Vrijednost_3 Drugi kodni blok kada nije ispunjen nijedan slučaj
  • Test_Expression: Ovo je izraz čiju vrijednost analiziramo pomoću različitih slučajeva (bolje objašnjeno s primjerima u nastavku).
  • Uvjet_1, Uvjet_2, …: Ovo su uvjeti pod kojima se testira tekstualni izraz. Ako ispunjava uvjet, tada se izvršava blok koda za zadani uvjet.

Za svaki izraz Izbor slučaja koji koristite morate koristiti izraz Odaberi kraj.

Bilješka: Čim je uvjet zadovoljen, VBA napušta konstrukciju odabira slučaja. Dakle, ako imate pet uvjeta, a drugi uvjet je ispunjen, VBA će izaći iz izbornog slučaja - a ostali uvjeti neće biti testirani.

Odaberite primjere slučajeva

Sada da bismo bolje razumjeli kako koristiti izraz Select Case u VBA -u, prođimo kroz nekoliko primjera.

Imajte na umu da je većina primjera u ovom vodiču namijenjena objašnjenju koncepta. To mogu, ali i ne moraju biti najbolji način za obaviti posao.

Počnimo s jednostavnim primjerom kako nam Select Case omogućuje provjeru uvjeta.

Primjer 1 - Provjerite brojeve

U donjem primjeru kôd traži od korisnika da unese bilo koji broj između 1 i 5, a zatim prikazuje okvir za poruku s brojem koji je korisnik unio.

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Molimo unesite broj između 1 i 5") Odaberite Case UserInput Case 1 MsgBox "Unijeli ste 1" Case 2 MsgBox "Unijeli ste 2" Case 3 MsgBox "Unijeli ste 3" Slučaj 4 MsgBox "Unijeli ste 4" Slučaj 5 MsgBox "Unijeli ste 5" Kraj Odaberite Kraj Pod

Imajte na umu da ovaj kôd daleko od toga da je koristan i čak nije ni siguran. Na primjer, ako unesete 6 ili bilo koji niz, to ne bi učinilo ništa. Ali kao što sam spomenuo, moja je namjera ovdje pokazati kako Select Case funkcionira.

Primjer 2 - Korištenje Select Case sa IS uvjetom

Možete upotrijebiti uvjet IS s konstrukcijom Odabir slučaja za provjeru vrijednosti brojeva.

Donji kod provjerava je li ulazni broj veći od 100 ili ne.

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Molimo unesite broj") Select Case UserInput Case Is = 100 MsgBox "Unijeli ste broj veći (ili jednak) 100" Kraj Odaberite End Sub

Primjer 3 - Upotreba drugog slučaja za hvatanje svih

U gornjem primjeru koristio sam dva uvjeta (manje od 100 ili veće ili jednako 100).

Umjesto drugog slučaja s uvjetom, možete koristiti i Case Else.

Slučaj Else djeluje kao sveobuhvatan i sve što ne spada u prethodne slučajeve rješava Slučaj Ostali.

Ispod je primjer koda u kojem sam koristio Case Else:

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Molimo unesite broj") Select Case UserInput Case je <100 MsgBox "Unijeli ste broj manji od 100" Case Else MsgBox "Unijeli ste broj veći od (ili jednak ) 100 "End Odaberite End Sub

Primjer 4 - Korištenje raspona brojeva

U Odabir slučaja možete provjeriti i raspon brojeva.

Kod u nastavku traži unos i prikazuje okvir s porukom na temelju vrijednosti.

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Molimo unesite broj između 1 i 100") Select Case UserInput Case 1 to 25 MsgBox "Unijeli ste broj manji od 25" Case 26 To 50 MsgBox "Unijeli ste broj između 26 i 50 "Case 51 To 75 MsgBox" Unijeli ste broj između 51 i 75 "Case 75 To 100 MsgBox" Unijeli ste broj veći od 75 "End Odaberite End Sub

Primjer 5 - Dobijte ocjenu na temelju bodovanja

Do sada smo vidjeli osnovne primjere (koji u stvarnom svijetu nisu baš korisni).

Evo primjera koji je bliži primjeru iz stvarnog svijeta gdje možete koristiti Select Case u Excelu VBA.

Sljedeći kôd će vam dati ocjenu koju student dobije na temelju ocjena na ispitu.

Podrazred () Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox ("Unesite oznake") Odaberi slučaj StudentMarks slučaj je <33 FinalGrade = "F" Slučaj 33 do 50 FinalGrade = "E" Slučaj 51 do 60 FinalGrade = "D "Case 60 To 70 FinalGrade =" C "Case 70 to 90 FinalGrade =" B "Case 90 To 100 FinalGrade =" A "End Select MsgBox" Grade is "& FinalGrade End Sub

Gornji kod traži od korisnika ocjene i na temelju njega prikazuje okvir s porukom s konačnom ocjenom.

U gornjem kodu naveo sam sve uvjete - za oznake 0 - 100.

Drugi način korištenja Select Case je korištenje Case Else na kraju. Ovo je korisno kada ste uzeli u obzir sve uvjete, a zatim odredili što trebate učiniti ako nijedan od uvjeta nije ispunjen.

Kod u nastavku je varijacija koda ocjene s manjom promjenom. Na kraju, ima naredbu Case else, koja će se izvršiti ako nijedan od gornjih uvjeta nije istinit.

Sub CheckOddEven () Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox ("Enter Marks") Odaberi slučaj StudentMarks slučaj je <33 FinalGrade = "F" Case 33 To 50 FinalGrade = "E" Case 51 To 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

Primjer 6 - Stvaranje prilagođene funkcije (UDF) pomoću slučaja odabira

U gornjem primjeru kôd je od korisnika tražio unos ocjena.

Također možete stvoriti prilagođenu funkciju (Korisnički definirana funkcija) koja se može koristiti kao i svaka uobičajena funkcija radnog lista i koja će vratiti ocjenu učenika.

Ispod je kôd koji će stvoriti prilagođenu formulu:

Funkcija GetGrade (StudentMarks As Integer) Dim FinalGrade As String Select Case StudentMarks Case je <33 FinalGrade = "F" Case 33 To 50 FinalGrade = "E" Case 51 to 60 FinalGrade = "D" Case 60 To 70 FinalGrade = "C" Slučaj 70 do 90 FinalGrade = "B" Slučaj Ostalo FinalGrade = "A" Kraj Odaberite GetGrade = Funkcija završetka FinalGrade

Nakon što unesete ovaj kôd u modul, možete koristiti funkciju GetGrade na radnom listu kao što je prikazano u nastavku.

Primjer 7 - Provjerite ODD / EVEN sa Select Case

Ispod je primjer koda u kojem provjeravam je li broj u ćeliji A1 neparan ili paran.

Sub CheckOddEven () CheckValue = Range ("A1"). Value Select Case (CheckValue Mod 2) = 0 Case True MsgBox "Broj je paran" Case False MsgBox "Broj je neparan" End Select End Sub

Primjer 8 - Provjera radnog dana/vikenda (više uvjeta)

Također možete koristiti Select Case za provjeru više vrijednosti u istom slučaju.

Na primjer, kôd u nastavku koristi trenutni datum da pokaže je li danas radni dan ili vikend (gdje su dani vikenda subota i nedjelja)

Sub CheckWeekday () Odaberite slučaj Radni dan (sada) Slučaj 1, 7 MsgBox "Danas je vikend" Slučaj Inače MsgBox "Danas je radni dan" Kraj Odaberite Kraj Pod

U gornjem kodu provjeravamo dva uvjeta (1 i 7) u istom slučaju.

Napomena: Funkcija radnog dana vraća 1 za nedjelju i 7 za subotu.

Primjer 9 - Ugniježđene izjave o odabiru slučaja

Također možete ugnijezditi jednu naredbu Odabir slučaja u drugu.

Ispod je kôd koji provjerava je li dan radnim danom ili vikendom, a ako je vikend, tada će se prikazati je li subota ili nedjelja.

Sub CheckWeekday () Odaberite slučaj Radni dan (sada) Slučaj 1, 7 Odaberite slučaj Radni dan (sada) Slučaj 1 MsgBox "Danas je nedjelja" Slučaj Ostalo MsgBox "Danas je subota" End Select Case Else MsgBox "Today is a Weekday" End Select End Pod

U gornji kôd ugniježdio sam Select Case da provjerim je li vikend subota ili nedjelja.

Napomena: Gore prikazani primjer objašnjava pojam. Ovo nije najbolji ili najpraktičniji način da saznate radnim danom/vikendom.

Primjer 10 - Provjera tekstualnog niza odabirom velikih slova

Pomoću Select Case možete provjeriti određene nizove, a zatim izvršiti kôd na temelju njih.

U donjem primjeru koda traži od korisnika da unese naziv svog odjela i prikazuje ime osobe s kojom bi se trebali povezati radi uključivanja.

Sub OnboardConnect () Dim Department Kao String Department = InputBox ("Unesite naziv svog odjela") Odaberite Slučaj Slučaj Služba "Marketing" MsgBox "Molimo vas da se povežete s Bobom Rainesom za ukrcavanje" Slučaj "Financije" MsgBox "Molimo vas da se povežete s Patricijom Cruz radi uključivanja" Slučaj "HR" MsgBox "Molimo vas da se povežete s Oliverom Random za ukrcavanje" Slučaj "Administrator" MsgBox "Molimo vas da se povežete s Helen Hume za ukrcavanje" Slučaj Else MsgBox "Molimo vas da se povežete s Tonyjem Randallom za ukrcaj" Kraj Odaberite kraj Sub

Nadam se da su svi gornji primjeri bili od pomoći u razumijevanju koncepta i primjene Select Case u Excelu VBA.

Možda će vam se svidjeti i sljedeći VBA vodiči:

  • Excel VBA petlje - Za sljedeće, Učinite dok, Učinite do, Za svaku.
  • Za sljedeću petlju u Excelu VBA.
  • Kako snimiti makro u Excelu.

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave