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 sjekke om det er flere forhold, er SELECT CASE-setningen.
Select Case er nyttig når du har tre eller flere forhold du ønsker å sjekke. Du kan også bruke dette med to forhold (men jeg føler If Then Else er lettere å bruke i de tilfellene).
Et enkelt eksempel der Select Case-setningen er nyttig når du ønsker å få karakteren en student basert på karakterene han / hun har fått (dekket som et eksempel senere i denne opplæringen).
Merk: Alle eksempelkodene dekket i denne opplæringen er ment å plasseres i en modul i VBA.
Denne veiledningen dekker:
Velg sakssyntaks
Nedenfor er syntaksen til Velg sak 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 uttrykket hvis verdi vi analyserer ved å bruke forskjellige tilfeller (forklart bedre med eksemplene nedenfor).
- Tilstand_1, Tilstand_2, …: Dette er forholdene som tekstuttrykket testes på. Hvis den oppfyller vilkåret, utføres kodeblokken for den gitte tilstanden.
For hver Select Case-setning du bruker, må du bruke Set Select-setningen.
Velg Case Eksempler
Nå til bedre forstå hvordan du bruker Select Case-uttalelse i VBA, la oss gå gjennom noen få eksempler.
Merk at de fleste eksemplene i denne opplæringen er ment å forklare konseptet. Dette er kanskje ikke 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 – Sjekk tallene
I eksemplet nedenfor ber koden brukeren om å oppgi et hvilket som helst tall mellom 1 og 5, og viser deretter en meldingsboks med nummeret brukeren skrev inn.
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
Merk at denne koden er langt fra nyttig og ikke engang idiotsikker. Hvis du for eksempel skriver inn 6 eller en streng, vil det ikke gjøre noe. Men som jeg nevnte, er min hensikt her å vise hvordan Select Case fungerer.
Eksempel 2 – Bruk Select Case med IS-tilstand
Du kan bruke en IS-tilstand med Select Case-konstruksjonen for å sjekke verdien av tall.
Koden nedenfor sjekker om inngangsnummeret er større enn 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 – Bruk Case Else for å fange opp 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 alt-i-en-sak, og alt som ikke faller inn i noen av de tidligere sakene blir behandlet av Case Else.
Nedenfor er et eksempel på en kode der jeg har brukt 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 – Bruke en rekke tall
I Select Du kan også se etter en rekke tall.
Koden nedenfor ber om inndata og viser en meldingsboks basert på verdien.
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 basert på poengkarakterene
Så langt har vi sett grunnleggende eksempler (som egentlig ikke er nyttige i den praktiske verdenen).
Her er et eksempel som er nærmere et eksempel fra den virkelige verden der du kan bruke Select Case i Excel VBA.
Den følgende koden gir deg karakteren en student får basert på karakterene i en eksamen.
Koden ovenfor ber brukeren om karakterene og viser en meldingsboks med sluttkarakter basert på den.
I ovennevnte kode har jeg spesifiserte alle betingelsene – for karakterene 0 – 100.
En annen måte å bruke Select Case på er å bruke en Case Else til slutt. Dette er nyttig når du har redegjort for alle vilkårene og deretter spesifiserer hva du skal gjøre når ingen av vilkårene er oppfylt.
Koden nedenfor er en variant av karakterkoden med mindre endring. Til slutt har den en Case else-setning, som vil bli utført når ingen av de ovennevnte forholdene er oppfylt.
Eksempel 6 – Opprette en tilpasset funksjon (UDF) ved hjelp av Select Case
I eksemplet ovenfor ba koden brukeren om merket.
Du kan også opprette en egendefinert funksjon (Brukerdefinert funksjon) som kan brukes akkurat som enhver vanlig regnearkfunksjon, og som vil returnere karakteren til studentene.
Nedenfor er koden som vil lage den tilpassede formelen:
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 koden i modul, kan du bruke funksjonen GetGrade i regnearket som vist nedenfor.
Eksempel 7 – Sjekk ODD / EVEN med Select Case
Nedenfor er et eksempel på kode der jeg sjekk om tallet i celle A1 er oddetall eller jevnt.
Eksempel 8 – Kontroll av ukedag / helg (flere forhold)
Du kan også bruke Velg sak for å se etter flere verdier i samme tilfelle.
For eksempel bruker koden nedenfor gjeldende dato for å vise om i dag er en ukedag eller helg (hvor helgedagene 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 koden ovenfor ser vi etter to forhold (1 og 7) i samme tilfelle.
Merk: Ukedagsfunksjonen returnerer 1 for søndag og 7 for lørdag.
Eksempel 9 – Nestede Select Case Statements
Du kan også hekke en Select Case-setning i andre.
Nedenfor er en kode som sjekker om en dag er en ukedag eller en helg, og hvis det er en helg, vil den vise 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 koden ovenfor, Jeg har nestet Select Case for å sjekke om helgen er en lørdag eller en søndag.
Merk: Eksemplet vist ovenfor er å forklare konseptet. Dette er ikke den beste eller den mest praktiske måten å finne ut ukedag / helg.
Eksempel 10 – Kontrollere 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 den brukeren om å angi avdelingsnavnet og viser navnet på personen de skal koble seg til for 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åper alle eksemplene ovenfor var nyttige for å forstå konseptet og anvendelsen av Select Case i Excel VBA.
Du vil kanskje også like følgende VBA-veiledninger:
- Excel VBA-løkker – For neste, gjør mens, gjør til, for hver.
- For neste løkke i Excel VBA.
- Hvordan ta opp en makro i Excel.