Excel VBA valitud juhtumi avaldus - selgitatud näidetega

Lang L: none (table-of-contents)

Excel VBA -l on konstruktsioon IF IF Else, mille abil saate analüüsida mitut tingimust ja käivitada nende tingimuste alusel koode.

Teine sarnane konstruktsioon, mis võimaldab teil kontrollida mitut tingimust, on VALI JUHTUM avaldus.

Valik Case on kasulik, kui teil on kolm või enam tingimust, mida soovite kontrollida. Saate seda kasutada ka kahe tingimusega (kuid ma leian, et kui siis on muudel juhtudel lihtsam neid kasutada).

Lihtne näide, kus avaldus Vali juhtum on kasulik, kui soovite saada õpilase hinnet tema hinnatud hinde põhjal (seda käsitletakse näitena hiljem selles juhendis).

Märkus. Kõik selles juhendis käsitletud näidiskoodid on mõeldud paigutamiseks VBA moodulisse.

Valige juhtumi süntaks

Allpool on Excel VBA valitud juhtumi süntaks:

Valige Juhtumi test_väljend Juhtumi väärtus_1 Koodiblokk, kui Test_Expression = Väärtus_1 Juhtumiväärtus_2 Koodplokk, kui Test_Expression = Väärtus_2 Juhtumiväärtus_3 Koodplokk, kui Test_Expression = Väärtus_3 Juhtum Muu Koodplokk, kui ükski juhtumitingimustest pole täidetud Lõpp Vali
  • Test_Expression: see on avaldis, mille väärtust analüüsime erinevate juhtumite abil (selgitatud paremini alltoodud näidetega).
  • Tingimus_1, tingimus_2,…: need on tingimused, millega tekstiväljendit testitakse. Kui see vastab tingimusele, täidetakse antud tingimuse koodiplokk.

Iga valitud juhtumi avalduse puhul, mida kasutate, peate kasutama lauset Lõppvalik.

Märge: Niipea kui tingimus on täidetud, väljub VBA valitud juhtumi konstruktsioonist. Nii et kui teil on viis tingimust ja teine ​​tingimus on täidetud, väljub VBA valikjuhtumist - ja ülejäänud tingimusi ei testita.

Valige juhtumite näited

Nüüd, et paremini mõista, kuidas VBA valikujuhtumi avaldust kasutada, vaatame läbi mõned näited.

Pange tähele, et enamik selle õpetuse näiteid on mõeldud kontseptsiooni selgitamiseks. Need võivad olla parimad viisid töö tegemiseks või mitte.

Alustame lihtsa näitega sellest, kuidas Select Case võimaldab meil tingimusi kontrollida.

Näide 1 - kontrollige numbreid

Allolevas näites palub kood kasutajal sisestada mis tahes numbri vahemikus 1 kuni 5 ja kuvab seejärel sõnumikasti kasutaja sisestatud numbriga.

Sub CheckNumber () Dim UserInput täisarvuna UserInput = InputBox ("Palun sisestage number vahemikus 1 kuni 5") Valige juhtum UserInput Case 1 MsgBox "Sisestasite 1" Case 2 MsgBox "Sisestasite 2" Case 3 MsgBox "Sisestasite 3" Juhtum 4 MsgBox "Sisestasite 4" Juhtum 5 MsgBox "Sisestasite 5" Lõpp Valige lõpp Alam

Pange tähele, et see kood pole kaugeltki kasulik ja pole isegi lollikindel. Näiteks kui sisestate 6 või mis tahes stringi, ei anna see midagi. Kuid nagu ma mainisin, on minu eesmärk siin näidata, kuidas Select Case töötab.

Näide 2 - Valikjuhtumi kasutamine IS -tingimusega

Arvude väärtuse kontrollimiseks võite kasutada IS -tingimust koos Select Case konstruktsiooniga.

Allpool olev kood kontrollib, kas sisendarv on suurem kui 100 või mitte.

AlamkontrollNumber () Dim UserInput täisarvuna

Näide 3 - Muu juhtumi kasutamine kõigi püüdmiseks

Ülaltoodud näites kasutasin kahte tingimust (vähem kui 100 või suurem või võrdne 100 -ga).

Teise tingimusega juhtumi asemel võite kasutada ka juhtumit Else.

Juhtum Else toimib kõikehõlmavalt ja juhtum Else käsitleb kõike, mis ei kuulu ühegi eelneva juhtumi alla.

Allpool on näidiskood, kus olen kasutanud juhtumit Else:

Sub CheckNumber () Dim UserInput täisarvuna UserInput = InputBox ("Palun sisestage number") Valige Case UserInput Case on <100 MsgBox "Sisestasite numbri alla 100" Case Else MsgBox "Sisestasite numbri rohkem kui (või võrdne ) 100 "Lõpp Valige Lõpp -alam

Näide 4 - Numbrivahemiku kasutamine

Valitud juhtumi puhul saate kontrollida ka numbrivahemikku.

Allolev kood küsib sisestust ja kuvab väärtuse põhjal sõnumikasti.

Sub CheckNumber () Dim UserInput täisarvuna UserInput = InputBox ("Palun sisestage number vahemikus 1 kuni 100") Valige juhtum UserInput Case 1 kuni 25 MsgBox "Sisestasite numbri alla 25" Case 26 to 50 MsgBox "Sisestasite numbri vahemikus 26 kuni 50 "Juhtum 51 kuni 75 MsgBox" Sisestasite numbri vahemikus 51 kuni 75 "Juhtum 75 kuni 100 MsgBox" Sisestasite numbri üle 75 "Lõpp Vali Lõpp Alam

Näide 5 - hinde hankimine punktisummade põhjal

Siiani oleme näinud põhinäiteid (millest praktilises maailmas tegelikult kasu pole).

Siin on näide, mis on lähemal reaalsele näitele, kus saate Exceli VBA-s kasutada valitud juhtumit.

Järgmine kood annab teile hinde, mille õpilane saab eksami hinde põhjal.

Alamklass () Dim StudentMarks täisarvuna Dim FinalGrade Stringina StudentMarks = InputBox ("Enter Marks") Valige juhtumi StudentMarks juhtum on <33 FinalGrade = "F" Case 33 to 50 FinalGrade = "E" Case 51 to 60 FinalGrade = "D "Juhtum 60 kuni 70 FinalGrade =" C "Juhtum 70 kuni 90 FinalGrade =" B "Juhtum 90 kuni 100 FinalGrade =" A "End Select MsgBox" The Grade is "& FinalGrade End Sub

Ülaltoodud kood küsib kasutajalt märke ja näitab selle põhjal sõnumikasti koos lõpliku hindega.

Ülaltoodud koodis olen määranud kõik tingimused - märkidele 0 - 100.

Teine võimalus valida valitud juhtumit on kasutada lõpus muud juhtumit. See on kasulik, kui olete kõik tingimused arvesse võtnud ja seejärel määrate, mida teha, kui ükski tingimus pole täidetud.

Allolev kood on hinnakoodi variatsioon väikese muudatusega. Lõpuks on sellel lause Case else, mis täidetakse, kui ükski ülaltoodud tingimustest pole tõene.

Sub CheckOddEven () Dim StudentMarks täisarvuna Dim FinalGrade Stringina StudentMarks = InputBox ("Enter Marks") Valige Case StudentMarks Case on <33 FinalGrade = "F" Case 33 to 50 FinalGrade = "E" Case 51 to 60 FinalGrade = "D "Juhtum 60 kuni 70 FinalGrade =" C "Juhtum 70 kuni 90 FinalGrade =" B "Case Else FinalGrade =" A "End Select MsgBox" The Grade is "& FinalGrade End Sub

Näide 6 - Kohandatud funktsiooni (UDF) loomine valitud juhtumi abil

Ülaltoodud näites küsis kood kasutajalt märkide sisestamist.

Samuti saate luua kohandatud funktsiooni (kasutaja määratud funktsioon), mida saab kasutada nagu iga tavalist töölehe funktsiooni ja mis tagastab õpilaste hinde.

Allpool on kood, mis loob kohandatud valemi:

Funktsioon GetGrade (StudentMarks kui täisarv) Dim FinalGrade kui string Valige juhtum StudentMarks Juhtum on <33 FinalGrade = "F" Case 33 to 50 FinalGrade = "E" Case 51 to 60 FinalGrade = "D" Case 60 to 70 FinalGrade = "C" Juhtum 70 kuni 90 FinalGrade = "B" Case Else FinalGrade = "A" End Select GetGrade = FinalGrade End Function

Kui see kood on moodulis, saate töölehel kasutada funktsiooni GetGrade, nagu allpool näidatud.

Näide 7 - kontrollige valikut ODD / EVEN valikuga Case

Allpool on näidiskood, kus kontrollin, kas lahtris A1 olev number on paaritu või paaris.

Alam CheckOddEven () CheckValue = Vahemik ("A1"). Väärtus Valige juhtum (CheckValue Mod 2) = 0 Case True MsgBox "Number on paaris" Case False MsgBox "Number on paaritu" End Valige End Sub

Näide 8 - nädalapäeva/nädalavahetuse kontrollimine (mitu tingimust)

Saate kasutada ka juhtumi valimist, et kontrollida mitmel juhul sama väärtuse väärtusi.

Näiteks näitab allolev kood praegust kuupäeva, et näidata, kas täna on tööpäev või nädalavahetus (kus nädalavahetuse päevad on laupäev ja pühapäev)

AlamkontrollWeekday () Valige juhtum Nädalapäev (praegu) Juhtum 1, 7 MsgBox "Täna on nädalavahetus" Juhtum Muu MsgBox "Täna on nädalapäev" Lõpp Valige lõpu alam

Ülaltoodud koodis kontrollime samal juhul kahte tingimust (1 ja 7).

Märkus. Nädala funktsioon tagastab pühapäevaks 1 ja laupäevaks 7.

Näide 9 - pesastatud valitud juhtumi avaldused

Samuti saate ühte valitud juhtumi avaldust teise sisestada.

Allpool on kood, mis kontrollib, kas päev on nädalapäev või nädalavahetus ja kui see on nädalavahetus, siis kuvatakse, kas see on laupäev või pühapäev.

AlamkontrollWeekday () Valige juhtumi nädalapäev (praegu) Juhtum 1, 7 Valige juhtumi nädalapäev (praegu) Juhtum 1 MsgBox "Täna on pühapäev" Case Else MsgBox "Täna on laupäev" Lõpeta Valige juhtum muidu MsgBox "Täna on nädalapäev" Lõpp Vali lõpp Sub

Ülaltoodud koodi olen pesastanud Select Case'i, et kontrollida, kas nädalavahetus on laupäev või pühapäev.

Märkus. Ülaltoodud näide selgitab mõistet. See ei ole parim ega praktilisem viis tööpäeva/nädalavahetuse väljaselgitamiseks.

Näide 10 - tekstistringi kontrollimine valitud tähega

Konkreetseid stringe saate valida valiku Case ja seejärel selle alusel koodi käivitada.

Allolevas näidiskoodis palub see kasutajal sisestada oma osakonna nime ja kuvab selle inimese nime, kellega ta peaks alustamiseks ühendust võtma.

Sub OnboardConnect () Dim Department kui stringiosakond = InputBox ("Sisestage oma osakonna nimi") Valige juhtumiosakonna juhtum "Turundus" MsgBox "Palun võtke ühendust Bob Rainesiga, et tutvustada" Case "Finance" MsgBox "Ühenduse loomiseks võtke ühendust Patricia Cruziga" Juhtum "HR" MsgBox "Ühenduse loomiseks võtke ühendust Oliver Randiga" Juhtumi "administraator" MsgBox "Palun võtke ühendust Helen Hume'iga sissejuhatuse jaoks" Case Else MsgBox "Palun võtke ühendust Tony Randalliga alustamiseks" Lõppvaliku lõpp Alam

Loodetavasti olid kõik ülaltoodud näited abiks Exceli VBA valitud juhtumi mõiste ja rakenduse mõistmisel.

Samuti võivad teile meeldida järgmised VBA õpetused:

  • Exceli VBA silmused - järgmiseks tehke aega, tehke kuni, igaühe jaoks.
  • Järgmise silmuse jaoks Excelis VBA.
  • Kuidas Excelis makro salvestada.

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave