Excel VBA Select Case Statement - Forklaret med eksempler

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

En anden lignende konstruktion, der giver dig mulighed for at kontrollere flere betingelser, er VÆLG CASE udmelding.

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

Et enkelt eksempel, hvor Select Case -erklæringen er nyttig, når du vil få karakteren af ​​en elev baseret på de karakterer, han/hun har scoret (dækket som et eksempel senere i denne vejledning).

Bemærk: Alle eksempler på koder, der er omfattet af denne vejledning, er beregnet til at blive placeret i et modul i VBA.

Vælg Case Syntax

Nedenfor er syntaksen for Select Case i Excel VBA:

Vælg 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 af ​​sagsbetingelserne er opfyldt Slut Vælg
  • Test_Expression: Dette er udtrykket, hvis værdi vi analyserer ved hjælp af forskellige cases (forklaret bedre med eksemplerne herunder).
  • Condition_1, Condition_2,…: Dette er betingelserne for tekstudtryk testet. Hvis den opfylder betingelsen, udføres kodeblokken for den givne betingelse.

For hver Select Case -erklæring, du bruger, skal du bruge erklæringen End Select.

Bemærk: Så snart en betingelse er opfyldt, forlader VBA den udvalgte sagskonstruktion. Så hvis du har fem betingelser, og den anden betingelse er opfyldt, ville VBA forlade Select Case - og resten af ​​betingelserne bliver ikke testet.

Vælg eksempler på sager

Lad os nu gennemgå et par eksempler for bedre at forstå, hvordan du bruger Select Case -erklæring i VBA.

Bemærk, at de fleste eksempler i denne vejledning er beregnet til at forklare konceptet. Disse er muligvis den bedste måde at få arbejdet udført på.

Lad os starte med et enkelt eksempel på, hvordan Select Case giver os mulighed for at kontrollere betingelser.

Eksempel 1 - Kontroller tallene

I eksemplet herunder beder koden brugeren om at indtaste et vilkårligt tal mellem 1 og 5 og viser derefter en meddelelsesboks med det nummer, brugeren har indtastet.

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Indtast venligst et tal mellem 1 og 5") Vælg Case UserInput Case 1 MsgBox "Du indtastede 1" Case 2 MsgBox "Du indtastede 2" Case 3 MsgBox "Du indtastede 3" Case 4 MsgBox "Du har indtastet 4" Case 5 MsgBox "Du har indtastet 5" End Vælg End Sub

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

Eksempel 2 - Brug af Select Case med IS -tilstand

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

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

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Indtast venligst et nummer") Vælg Case UserInput Case Is = 100 MsgBox "Du har indtastet et tal mere end (eller lig med) 100" End Select End 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 catch-all, og alt, hvad der ikke falder ind i nogen af ​​de tidligere sager, behandles af Case Else.

Nedenfor er en eksempelkode, hvor jeg har brugt Case Else:

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Indtast venligst et tal") Vælg Case UserInput Case er <100 MsgBox "Du har indtastet et tal mindre end 100" Case Else MsgBox "Du har indtastet et tal mere end (eller lig med ) 100 "End Vælg End Sub

Eksempel 4 - Brug af en række tal

I Select Case kan du også kontrollere, om der er en række numre.

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

Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Indtast et tal mellem 1 og 100") Vælg Case UserInput Case 1 til 25 MsgBox "Du har indtastet et tal mindre end 25" Case 26 til 50 MsgBox "Du har indtastet et nummer mellem 26 og 50 "Sag 51 til 75 MsgBox" Du har indtastet et nummer mellem 51 og 75 "Sag 75 til 100 MsgBox" Du har indtastet et tal mere end 75 "Slut Vælg slut

Eksempel 5 - Få karakteren baseret på de karakterer, der er scoret

Hidtil 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.

Følgende kode giver dig den karakter, en elev får baseret på karaktererne 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 Vælg MsgBox" Karakteren er "& FinalGrade End Sub

Ovenstående kode beder brugeren om mærkerne og viser på baggrund af den en meddelelsesboks med den endelige karakter.

I ovenstående kode har jeg angivet alle betingelserne - for mærker 0 - 100.

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

Nedenstående kode 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 opfyldt.

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 Vælg MsgBox" Karakteren er "& FinalGrade End Sub

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

I eksemplet ovenfor bad koden brugeren om mærkeindtastning.

Du kan også oprette en brugerdefineret funktion (brugerdefineret funktion), der kan bruges ligesom enhver almindelig regnearksfunktion, og som vil returnere karakteren for eleverne.

Nedenfor er koden, der vil oprette den tilpassede formel:

Funktion GetGrade (StudentMarks Som 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" Sag 70 til 90 FinalGrade = "B" Case Else FinalGrade = "A" End Vælg GetGrade = FinalGrade End -funktion

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

Eksempel 7 - Kontroller ODD / EVEN med Select Case

Nedenfor er en eksempelkode, hvor jeg kontrollerer, om tallet i celle A1 er ulige eller lige.

Sub CheckOddEven () CheckValue = Range ("A1"). Værdi Vælg Case (CheckValue Mod 2) = 0 Case True MsgBox "Tallet er lige" Case False MsgBox "Tallet er ulige" End Select End Sub Sub

Eksempel 8 - Kontrol af hverdag/weekend (flere betingelser)

Du kan også bruge Vælg sag til at søge efter flere værdier i den samme sag.

For eksempel 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 () Vælg Case Weekday (Now) Case 1, 7 MsgBox "Today is a Weekend" Case Else MsgBox "Today is a Weekday" End Select End Sub

I ovenstående kode kontrollerer vi for to betingelser (1 og 7) i samme tilfælde.

Bemærk: Hverdagsfunktionen returnerer 1 for søndag og 7 for lørdag.

Eksempel 9 - Indlejret Select Case Statements

Du kan også indlejre en Select Case -erklæring 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 den, om det er en lørdag eller en søndag.

Sub CheckWeekday () Vælg sag Ugedag (nu) Sag 1, 7 Vælg sag Ugedag (nu) Sag 1 MsgBox "I dag er søndag" Sag Else MsgBox "I dag er lørdag" Slut Vælg sag Ellers MsgBox "I dag er en hverdag" Slut Vælg slut Sub

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

Bemærk: Eksemplet vist ovenfor er for 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 bestemte 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 sit afdelingsnavn og viser navnet på den person, de skal forbinde med til onboarding.

Sub OnboardConnect () Dim Department As String Department = InputBox ("Enter your Department Name") Vælg Case Department Case "Marketing" MsgBox "Kontakt venligst Bob Raines for Onboarding" Case "Finance" MsgBox "Please connect with Patricia Cruz for Onboarding" Sag "HR" MsgBox "Forbind venligst med Oliver Rand for Onboarding" Sag "Admin" MsgBox "Kontakt venligst med Helen Hume for Onboarding" Case Else MsgBox "Kontakt venligst med Tony Randall for Onboarding" End Vælg End Sub

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

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

  • Excel VBA -sløjfer - Til næste, gør mens, gør indtil, for hver.
  • Til Next Loop i Excel VBA.
  • Sådan optages en makro i Excel.

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave