Excel VBA Select Case Statement – Forklaret med eksempler

Excel VBA har IF derefter Else-konstruktion, som du kan bruge til at analysere flere forhold og udføre koder baseret på disse betingelser.

En anden lignende konstruktion, der giver dig mulighed for at kontrollere flere betingelser, er SELECT CASE-sætningen.

Select Case er nyttig, når du har tre eller flere betingelser, som du vil have at tjekke. Du kan også bruge dette med to betingelser (men jeg føler, at hvis derefter andet er lettere at bruge i disse tilfælde).

Et simpelt eksempel, hvor Select Case-sætningen er nyttig, når du vil få karakteren af en studerende baseret på de karakterer, han / hun har scoret (dækket som et eksempel senere i denne selvstudie).

Bemærk: Alle de eksempelkoder, der er dækket af denne tutorial, er beregnet til at blive placeret i et modul i VBA.

Denne vejledning dækker:

Vælg sagssyntaks

Nedenfor er syntaksen for Vælg sag i Excel VBA:

Select Case Test_ExpressionCase Value_1Code Block when Test_Expression = Value_1Case Value_2Code Block when Test_Expression = Value_2Case Value_3Code Block when Test_Expression = Value_3Case ElseCode Block when none of the case conditions are metEnd Select
  • Test_Expression: Dette er det udtryk, hvis værdi vi analyserer ved hjælp af forskellige tilfælde (forklaret bedre med eksemplerne nedenfor).
  • Betingelse_1, Betingelse_2, …: Dette er de betingelser, som tekstudtrykket testes på. Hvis den opfylder betingelsen, udføres kodeblokken for den givne betingelse.

For hver Select Case-sætning, du bruger, skal du bruge sætningen Select Select.

Bemærk: Så snart en betingelse er opfyldt, forlader VBA den valgte case-konstruktion. Så hvis du har fem betingelser, og den anden betingelse er opfyldt, ville VBA afslutte Select Case – og resten af betingelserne testes ikke.

Vælg Case-eksempler

Nu til bedre forstå, hvordan man bruger Select Case-sætning i VBA, lad os gennemgå et par eksempler.

Bemærk, at de fleste eksempler i denne tutorial er beregnet til at forklare konceptet. Disse er måske ikke den bedste måde at få arbejdet på.

Lad os starte med et simpelt eksempel på, hvordan Select Case tillader os at kontrollere forholdene.

Eksempel 1 – Kontroller numrene

I nedenstående eksempel beder koden brugeren om at indtaste et hvilket som helst tal mellem 1 og 5 og viser derefter en meddelelsesboks med det nummer, brugeren indtastede.

Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number between 1 and 5")Select Case UserInputCase 1MsgBox "You entered 1"Case 2MsgBox "You entered 2"Case 3MsgBox "You entered 3"Case 4MsgBox "You entered 4"Case 5MsgBox "You entered 5"End SelectEnd Sub

Bemærk, at denne kode langt fra er nyttig og ikke engang idiotsikker. For eksempel, hvis du indtaster 6 eller en streng, ville det ikke gøre noget. Men som jeg nævnte, er min hensigt her at fremvise, hvordan Select Case fungerer.

Eksempel 2 – Brug af Select Case med IS-tilstand

Du kan bruge en IS-tilstand med Select Case-konstruktionen for at kontrollere værdien af tal.

Nedenstående kode kontrollerer, om inputnummeret er større end 100 eller ikke.

Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number")Select Case UserInputCase Is < 100MsgBox "You entered a number less than 100"Case Is >= 100MsgBox "You entered a number more than (or equal to) 100"End SelectEnd Sub

Eksempel 3 – Brug af Case Else til at fange alle

I ovenstående eksempel brugte jeg to betingelser (mindre end 100 eller større end eller lig med 100).

I stedet for den anden sag med en betingelse, kan du også bruge Case Else.

Case Else fungerer som en alt-i-alt, og alt, hvad der ikke falder ind i nogen af de tidligere sager, behandles af Case Else.

Nedenfor er et eksempel på en kode, hvor jeg har brugt Case Else:

Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number")Select Case UserInputCase Is < 100MsgBox "You entered a number less than 100"Case ElseMsgBox "You entered a number more than (or equal to) 100"End SelectEnd Sub

Eksempel 4 – Brug af et antal numre

I Select Tilfælde, du kan også se efter en række numre.

Nedenstående kode beder om et input og viser et meddelelsesfelt baseret på værdien.

Sub CheckNumber()Dim UserInput As IntegerUserInput = InputBox("Please enter a number between 1 and 100")Select Case UserInputCase 1 To 25MsgBox "You entered a number less than 25"Case 26 To 50MsgBox "You entered a number between 26 and 50"Case 51 To 75MsgBox "You entered a number between 51 and 75"Case 75 To 100MsgBox "You entered a number more than 75"End SelectEnd Sub

Eksempel 5 – Få karakteren baseret på de scorede karakterer

Indtil videre har vi set grundlæggende eksempler (som ikke rigtig er nyttige i den praktiske verden).

Her er et eksempel, der er tættere på et eksempel fra den virkelige verden, hvor du kan bruge Select Case i Excel VBA.

Den følgende kode giver dig den karakter, en studerende får baseret på karaktererne i en eksamen.

Ovenstående kode beder brugeren om karaktererne og viser baseret på den en meddelelsesboks med den endelige karakter.

I ovenstående kode har jeg angav alle betingelser – for karakterer 0 – 100.

En anden måde at bruge Select Case på er at bruge en Case Else i slutningen. Dette er nyttigt, når du har taget højde for alle betingelserne og derefter angiver, hvad du skal gøre, når ingen af betingelserne er opfyldt.

Koden nedenfor er en variation af karakterkoden med en mindre ændring. I sidste ende har den en Case else-erklæring, som udføres, når ingen af ovenstående betingelser er sande.

Eksempel 6 – Oprettelse af en brugerdefineret funktion (UDF) ved hjælp af Select Case

I ovenstående eksempel bad koden brugeren om indtastning af mærker.

Du kan også oprette en brugerdefineret funktion (brugerdefineret funktion), der kan bruges ligesom enhver almindelig regnearksfunktion, og som vender tilbage elevernes karakter.

Nedenfor er koden, der opretter den brugerdefinerede formel:

Function GetGrade(StudentMarks As Integer)Dim FinalGrade As StringSelect Case StudentMarksCase Is < 33FinalGrade = "F"Case 33 To 50FinalGrade = "E"Case 51 To 60FinalGrade = "D"Case 60 To 70FinalGrade = "C"Case 70 To 90FinalGrade = "B"Case ElseFinalGrade = "A"End SelectGetGrade = FinalGradeEnd Function

Når du har denne kode i modul, kan du bruge funktionen GetGrade i regnearket som vist nedenfor.

Eksempel 7 – Kontroller ODD / EVEN med Select Case

Nedenfor er et eksempel på en kode, hvor jeg kontroller, om tallet i celle A1 er ulige eller lige.

Eksempel 8 – Kontrol af ugedag / weekend (flere forhold)

Du kan også bruge Vælg sag til at kontrollere flere værdier i samme sag.

F.eks. bruger nedenstående kode den aktuelle dato til at vise, om i dag er en hverdag eller weekend (hvor weekenddage er lørdag og søndag)

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

I ovenstående kode kontrollerer vi, om der er to forhold (1 og 7) i samme tilfælde.

Bemærk: Ugedagsfunktionen returnerer 1 til søndag og 7 til lørdag.

Eksempel 9 – Nested Select Case Statements

Du kan også rede en Select Case-sætning i en anden.

Nedenfor er en kode, der kontrollerer, om en dag er en hverdag eller en weekend, og hvis det er en weekend, så viser det, om det er en lørdag eller en søndag.

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

I ovenstående kode, Jeg har indlejret Select Case for at kontrollere, om weekenden er en lørdag eller en søndag.

Bemærk: Eksemplet vist ovenfor er at forklare konceptet. Dette er ikke den bedste eller den mest praktiske måde at finde ud af hverdag / weekend.

Eksempel 10 – Kontrol af tekststreng med Select Case

Du kan kontrollere specifikke strenge ved hjælp af Select Case og derefter udføre kode baseret på den.

I nedenstående eksempelkode beder den brugeren om at indtaste deres afdelingsnavn og viser navnet på den person, de skal oprette forbindelse til ved ombordstigning.

Sub OnboardConnect()Dim Department As StringDepartment = InputBox("Enter Your Department Name")Select Case DepartmentCase "Marketing"MsgBox "Please connect with Bob Raines for Onboarding"Case "Finance"MsgBox "Please connect with Patricia Cruz for Onboarding"Case "HR"MsgBox "Please connect with Oliver Rand for Onboarding"Case "Admin"MsgBox "Please connect with Helen Hume for Onboarding"Case ElseMsgBox "Please connect with Tony Randall for Onboarding"End SelectEnd Sub

Håber, at alle eksemplerne ovenfor var nyttige til forståelse af konceptet og anvendelsen af Select Case i Excel VBA.

Du kan også lide følgende VBA-vejledninger:

  • Excel VBA-løkker – Til næste, gør mens, gør indtil, for hver.
  • For næste løkke i Excel VBA.
  • Sådan registreres en makro i Excel.

Write a Comment

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *