Excel VBA Select Case Statement - Forklaret med eksempler

Excel VBA har IF Then Else -konstruksjonen som du kan bruke til å analysere flere forhold og utføre koder basert på disse forholdene.

En annen lignende konstruksjon som lar deg se etter flere forhold er VELG CASE uttalelse.

Select Case er nyttig når du har tre eller flere forhold du vil kontrollere. Du kan også bruke dette med to betingelser (men jeg føler at If Then Else er lettere å bruke i disse tilfellene).

Et enkelt eksempel der Select Case -setningen er nyttig når du vil få karakteren til en elev basert på karakterene han/hun har fått (dekket som et eksempel senere i denne opplæringen).

Merk: Alle eksemplene som er dekket i denne opplæringen, er ment å plasseres i en modul i VBA.

Velg Case Syntax

Nedenfor er syntaksen til Select Case i Excel VBA:

Velg Case Test_Expression Case Value_1 Code Block når Test_Expression = Value_1 Case Value_2 Code Block når Test_Expression = Value_2 Case Value_3 Code Block når Test_Expression = Value_3 Case Else Code Block når ingen av sakens betingelser er oppfylt Slutt Velg
  • Test_Expression: Dette er uttrykket hvis verdi vi analyserer ved å bruke forskjellige tilfeller (forklart bedre med eksemplene nedenfor).
  • Condition_1, Condition_2,…: Dette er betingelsene for tekstuttrykket som testes. Hvis den oppfyller betingelsen, blir kodeblokken for den gitte betingelsen utført.

For hver Select Case -uttalelse du bruker, må du bruke End Select -setningen.

Merk: Så snart en betingelse er oppfylt, forlater VBA den valgte sakskonstruksjonen. Så hvis du har fem betingelser, og den andre betingelsen er oppfylt, ville VBA gå ut av Select Case - og resten av betingelsene vil ikke bli testet.

Velg eksempler på saker

For å bedre forstå hvordan du bruker Select Case -setning i VBA, la oss gå gjennom noen eksempler.

Vær oppmerksom på at de fleste eksemplene i denne opplæringen er ment å forklare konseptet. Disse er kanskje den beste måten å få jobben gjort.

La oss starte med et enkelt eksempel på hvordan Select Case lar oss se etter forhold.

Eksempel 1 - Kontroller tallene

I eksemplet nedenfor ber koden brukeren om å skrive inn et hvilket som helst tall mellom 1 og 5, og viser deretter en meldingsboks med nummeret brukeren har angitt.

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Skriv inn et tall mellom 1 og 5") Velg Case UserInput Case 1 MsgBox "Du skrev inn 1" Case 2 MsgBox "Du skrev inn 2" Case 3 MsgBox "Du skrev inn 3" Case 4 MsgBox "Du skrev inn 4" Case 5 MsgBox "Du skrev inn 5" End Velg End Sub

Vær oppmerksom på at denne koden langt fra er nyttig og ikke engang er idiotsikker. For eksempel, hvis du skriver inn 6 eller en streng, vil det ikke gjøre noe. Men som jeg nevnte, er min intensjon her å vise hvordan Select Case fungerer.

Eksempel 2 - Bruke Select Case med IS -tilstand

Du kan bruke en IS -tilstand med Select Case -konstruksjonen for å sjekke verdien av tall.

Koden nedenfor sjekker om inndatatallet er større enn 100 eller ikke.

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Vennligst skriv inn et tall") Velg Case UserInput Case Is = 100 MsgBox "Du har angitt et tall som er mer enn (eller lik) 100" End Select End Sub Sub

Eksempel 3 - Bruk Case Else til å fange alle

I eksemplet ovenfor brukte jeg to forhold (mindre enn 100 eller større enn eller lik 100).

I stedet for den andre saken med en tilstand, kan du også bruke Case Else.

Case Else fungerer som en catch-all, og alt som ikke faller inn i noen av de tidligere sakene, blir behandlet av Case Else.

Nedenfor er en eksempelkode der jeg har brukt Case Else:

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Vennligst skriv inn et tall") Velg Case UserInput Case er <100 MsgBox "Du skrev inn et tall mindre enn 100" Case Else MsgBox "Du skrev inn et tall som er mer enn (eller lik ) 100 "End Velg End Sub

Eksempel 4 - Bruk av tall

I Select Case kan du også se etter en rekke tall.

Koden nedenfor ber om inndata og viser en meldingsboks basert på verdien.

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Vennligst skriv inn et tall mellom 1 og 100") Velg Case UserInput Case 1 til 25 MsgBox "Du skrev inn et tall mindre enn 25" Case 26 To 50 MsgBox "Du skrev inn et tall mellom 26 og 50 "Sak 51 Til 75 MsgBox" Du skrev inn et tall mellom 51 og 75 "Sak 75 til 100 MsgBox" Du skrev inn et tall mer enn 75 "Slutt Velg Avslutt Sub

Eksempel 5 - Få karakteren basert på poengsummen

Så langt har vi sett grunnleggende eksempler (som egentlig ikke er nyttige i den praktiske verden).

Her er et eksempel som er nærmere et eksempel fra den virkelige verden der du kan bruke Select Case i Excel VBA.

Følgende kode vil gi deg karakteren en student får basert på karakterene i en eksamen.

Underkarakter () Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox ("Enter Marks") Select Case StudentMarks Case Is <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 90 To 100 FinalGrade =" A "End Velg MsgBox" Karakteren er "& FinalGrade End Sub

Koden ovenfor ber brukeren om merkene, og basert på den viser en meldingsboks med den endelige karakteren.

I koden ovenfor har jeg spesifisert alle betingelsene - for merkene 0 - 100.

En annen måte å bruke Select Case på er å bruke en Case Else på slutten. Dette er nyttig når du har redegjort for alle betingelsene og deretter angir hva du skal gjøre når ingen av betingelsene er oppfylt.

Koden nedenfor er en variant av karakterkoden med en liten endring. Til slutt har den en Case else -uttalelse, som vil bli utført når ingen av de ovennevnte betingelsene er sanne.

Sub CheckOddEven () Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox ("Enter Marks") Select Case StudentMarks Case Is <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 Velg MsgBox" Karakteren er "& FinalGrade End Sub

Eksempel 6 - Opprette en egendefinert funksjon (UDF) ved hjelp av Select Case

I eksemplet ovenfor spurte koden brukeren om merkingen.

Du kan også opprette en egendefinert funksjon (brukerdefinert funksjon) som kan brukes akkurat som en vanlig regnearkfunksjon, og som vil returnere karakteren til elevene.

Nedenfor er koden som vil lage den tilpassede formelen:

Funksjon GetGrade (StudentMarks As Integer) Dim FinalGrade As String Select Case StudentMarks Case Is <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 Velg GetGrade = FinalGrade Sluttfunksjon

Når du har denne koden i modulen, kan du bruke funksjonen GetGrade i regnearket som vist nedenfor.

Eksempel 7 - Kontroller ODD / EVEN med Select Case

Nedenfor er en eksempelkode hvor jeg sjekker om tallet i celle A1 er oddetall eller partall.

Sub CheckOddEven () CheckValue = Range ("A1"). Verdi Velg Case (CheckValue Mod 2) = 0 Case True MsgBox "Tallet er til og med" Case False MsgBox "Tallet er oddetall" End Select End Sub Sub

Eksempel 8 - Kontroll av hverdag/helg (flere forhold)

Du kan også bruke Velg sak til å se etter flere verdier i samme sak.

For eksempel bruker koden nedenfor gjeldende dato for å vise om i dag er en ukedag eller helg (hvor helgedager er lørdag og søndag)

Sub CheckWeekday () Velg Case Weekday (Now) Case 1, 7 MsgBox "Today is a Weekend" Case Else MsgBox "Today is a Weekday" End Select End Sub

I koden ovenfor ser vi etter to forhold (1 og 7) i samme tilfelle.

Merk: Ukedagsfunksjon returnerer 1 for søndag og 7 for lørdag.

Eksempel 9 - Nested Select Case Statements

Du kan også bygge en Select Case -uttalelse i en annen.

Nedenfor er en kode som sjekker om en dag er en hverdag eller en helg, og hvis det er en helg, så vil den vise om det er en lørdag eller en søndag.

Sub CheckWeekday () Velg Case Weekday (Now) Case 1, 7 Select Case Weekday (Now) Case 1 MsgBox "Today is Sunday" Case Else MsgBox "Today is Saturday" End Select Case Else MsgBox "Today is a Weekday" End Select End Under

I koden ovenfor har jeg nestet Select Case for å sjekke om helgen er en lørdag eller en søndag.

Merk: Eksemplet vist ovenfor er for å forklare konseptet. Dette er ikke den beste eller mest praktiske måten å finne ut hverdag/helg.

Eksempel 10 - Kontroll av tekststreng med Select Case

Du kan sjekke spesifikke strenger ved hjelp av Select Case og deretter utføre kode basert på den.

I eksempelkoden nedenfor ber brukeren om å skrive inn avdelingsnavnet sitt og viser navnet på personen de skal koble seg til for ombordstigning.

Sub OnboardConnect () Dim Department As String Department = InputBox ("Enter your Department Name") Velg Case Department Case "Marketing" MsgBox "Ta kontakt med Bob Raines for Onboarding" Case "Finance" MsgBox "Ta kontakt med Patricia Cruz for Onboarding" Case "HR" MsgBox "Ta kontakt med Oliver Rand for Onboarding" Case "Admin" MsgBox "Please connect with Helen Hume for Onboarding" Case Else MsgBox "Please connect with Tony Randall for Onboarding" End Select End Sub

Håper alle eksemplene ovenfor var nyttige for å forstå konseptet og anvendelsen av Select Case i Excel VBA.

Du kan også like følgende VBA -opplæringsprogrammer:

  • Excel VBA -sløyfer - For neste, gjør mens, gjør til, for hver.
  • For Next Loop i Excel VBA.
  • Slik spiller du inn en makro i Excel.
wave wave wave wave wave