Excel VBA Select Case Statement - Uitgelegd met voorbeelden

Excel VBA heeft de IF Then Else-constructie die u kunt gebruiken om meerdere voorwaarden te analyseren en codes uit te voeren op basis van deze voorwaarden.

Een ander soortgelijk construct waarmee u op meerdere voorwaarden kunt controleren, is de KIES GEVAL uitspraak.

Case selecteren is handig wanneer u drie of meer voorwaarden hebt die u wilt controleren. Je kunt dit ook gebruiken met twee voorwaarden (maar ik denk dat If Then Else in die gevallen gemakkelijker te gebruiken is).

Een eenvoudig voorbeeld waarbij de opdracht Select Case handig is als u het cijfer van een leerling wilt krijgen op basis van de cijfers die hij/zij heeft behaald (wordt later in deze zelfstudie als voorbeeld behandeld).

Opmerking: alle voorbeeldcodes die in deze zelfstudie worden behandeld, zijn bedoeld om in een module in VBA te worden geplaatst.

Selecteer hoofdlettersyntaxis

Hieronder staat de syntaxis van Select Case in Excel VBA:

Selecteer Case Test_Expression Case Value_1 Codeblok wanneer Test_Expression = Value_1 Case Value_2 Code Block wanneer Test_Expression = Value_2 Case Value_3 Code Block wanneer Test_Expression = Value_3 Case Anders Codeblok wanneer aan geen van de casevoorwaarden wordt voldaan Einde Selecteren
  • Test_Expression: dit is de expressie waarvan we de waarde analyseren door verschillende gevallen te gebruiken (beter uitgelegd met de onderstaande voorbeelden).
  • Condition_1, Condition_2,… : Dit zijn de voorwaarden waarop de tekstuitdrukking wordt getest. Als het aan de voorwaarde voldoet, wordt het codeblok voor de gegeven voorwaarde uitgevoerd.

Voor elke Select Case-instructie die u gebruikt, moet u de End Select-instructie gebruiken.

Opmerking: Zodra aan een voorwaarde is voldaan, verlaat VBA de select case-constructie. Dus als je vijf voorwaarden hebt en aan de tweede voorwaarde is voldaan, sluit VBA Select Case af - en de rest van de voorwaarden worden niet getest.

Selecteer casusvoorbeelden

Laten we nu een paar voorbeelden doornemen om beter te begrijpen hoe u de Select Case-instructie in VBA kunt gebruiken.

Merk op dat de meeste voorbeelden in deze tutorial bedoeld zijn om het concept uit te leggen. Deze kunnen al dan niet de beste manier zijn om het werk gedaan te krijgen.

Laten we beginnen met een eenvoudig voorbeeld om te zien hoe Select Case ons in staat stelt om te controleren op voorwaarden.

Voorbeeld 1 - Controleer de nummers

In het onderstaande voorbeeld vraagt ​​de code de gebruiker om een ​​getal tussen 1 en 5 in te voeren, waarna een berichtvenster wordt weergegeven met het nummer dat de gebruiker heeft ingevoerd.

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox("Voer een getal in tussen 1 en 5") Selecteer Case UserInput Case 1 MsgBox "U hebt 1 ingevoerd" Case 2 MsgBox "U hebt 2 ingevoerd" Case 3 MsgBox "U hebt 3 ingevoerd" Case 4 MsgBox "U hebt 4 ingevoerd" Case 5 MsgBox "U hebt 5 ingevoerd" Einde Selecteren Einde Sub

Merk op dat deze code verre van nuttig is en zelfs niet onfeilbaar is. Als u bijvoorbeeld 6 of een willekeurige tekenreeks invoert, zou het niets doen. Maar zoals ik al zei, mijn bedoeling hier is om te laten zien hoe Select Case werkt.

Voorbeeld 2 - Select Case gebruiken met IS-voorwaarde

U kunt een IS-voorwaarde gebruiken met de constructie Select Case om de waarde van getallen te controleren.

De onderstaande code controleert of het invoernummer groter is dan 100 of niet.

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox("Voer een getal in") Select Case UserInput Case Is = 100 MsgBox "U heeft een getal ingevoerd dat groter is dan (of gelijk aan) 100" End Select End Sub

Voorbeeld 3 - Case Else gebruiken om alles te vangen

In het bovenstaande voorbeeld heb ik twee voorwaarden gebruikt (minder dan 100 of groter dan of gelijk aan 100).

In plaats van het tweede geval met een voorwaarde, kunt u ook Case Else gebruiken.

Case Else fungeert als een verzamelpunt en alles wat niet in een van de voorgaande gevallen valt, wordt behandeld door Case Else.

Hieronder staat een voorbeeldcode waarin ik Case Else heb gebruikt:

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox("Voer een getal in") Selecteer Case UserInput Case Is < 100 MsgBox "U heeft een getal kleiner dan 100 ingevoerd" Case Else MsgBox "U heeft een getal ingevoerd dat groter is dan (of gelijk is aan ) 100" Einde Selecteer Einde Sub

Voorbeeld 4 - Een reeks getallen gebruiken

In Case selecteren kunt u ook controleren op een reeks getallen.

De onderstaande code vraagt ​​om invoer en toont een berichtvenster op basis van de waarde.

Sub CheckNumber() Dim UserInput As Integer UserInput = InputBox("Voer een getal in tussen 1 en 100") Selecteer Case UserInput Case 1 tot 25 MsgBox "U heeft een getal kleiner dan 25 ingevoerd" Case 26 tot 50 MsgBox "U heeft een nummer ingevoerd tussen 26 en 50" Case 51 Tot 75 MsgBox "U hebt een nummer tussen 51 en 75 ingevoerd" Case 75 Tot 100 MsgBox "U hebt een nummer hoger dan 75 ingevoerd" Einde Selecteer Einde Sub

Voorbeeld 5 - Krijg het cijfer op basis van de gescoorde punten

Tot nu toe hebben we basisvoorbeelden gezien (die in de praktijk niet echt bruikbaar zijn).

Hier is een voorbeeld dat dichter bij een praktijkvoorbeeld ligt waar u Select Case in Excel VBA kunt gebruiken.

De volgende code geeft je het cijfer dat een student krijgt op basis van de cijfers in een examen.

Sub Grade() Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox ("Enter Marks") Selecteer Case StudentMarks Case Is < 33 FinalGrade = "F" Case 33 Tot 50 FinalGrade = "E" Case 51 Tot 60 FinalGrade = "D " Case 60 tot 70 FinalGrade = "C" Case 70 tot 90 FinalGrade = "B" Case 90 tot 100 FinalGrade = "A" End Selecteer MsgBox "The Grade is " & FinalGrade End Sub

De bovenstaande code vraagt ​​de gebruiker naar de cijfers en toont op basis daarvan een berichtvenster met het eindcijfer.

In de bovenstaande code heb ik alle voorwaarden gespecificeerd - voor cijfers 0 - 100.

Een andere manier om Select Case te gebruiken, is door aan het einde een Case Else te gebruiken. Dit is handig wanneer u alle voorwaarden hebt verantwoord en vervolgens specificeert wat u moet doen als aan geen van de voorwaarden wordt voldaan.

De onderstaande code is een variatie op de Grade-code met een kleine wijziging. Uiteindelijk heeft het een Case else-instructie, die wordt uitgevoerd als geen van de bovenstaande voorwaarden waar is.

Sub CheckOddEven() Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox("Enter Marks") Selecteer Case StudentMarks Case Is < 33 FinalGrade = "F" Case 33 Tot 50 FinalGrade = "E" Case 51 Tot 60 FinalGrade = "D " Case 60 tot 70 FinalGrade = "C" Case 70 tot 90 FinalGrade = "B" Case Else FinalGrade = "A" End Selecteer MsgBox "The Grade is " & FinalGrade End Sub

Voorbeeld 6 - Een aangepaste functie (UDF) maken met Case selecteren

In het bovenstaande voorbeeld vroeg de code de gebruiker om de invoer van de tekens.

U kunt ook een aangepaste functie (door de gebruiker gedefinieerde functie) maken die net als elke gewone werkbladfunctie kan worden gebruikt en die het cijfer van de studenten teruggeeft.

Hieronder staat de code waarmee de aangepaste formule wordt gemaakt:

Functie GetGrade(Student Marks As Integer) Dim FinalGrade As String Select Case StudentMarks Case Is < 33 FinalGrade = "F" Case 33 Tot 50 FinalGrade = "E" Case 51 Tot 60 FinalGrade = "D" Case 60 Tot 70 FinalGrade = "C" Case 70 tot 90 FinalGrade = "B" Case Else FinalGrade = "A" End Selecteer GetGrade = FinalGrade End Functie

Zodra je deze code in de module hebt, kun je de functie GetGrade in het werkblad gebruiken zoals hieronder weergegeven.

Voorbeeld 7 - Controleer ONEVEN / EVEN met Select Case

Hieronder staat een voorbeeldcode waarbij ik controleer of het getal in cel A1 even of oneven is.

Sub CheckOddEven() CheckValue = Range("A1").Value Select Case (CheckValue Mod 2) = 0 Case True MsgBox "Het nummer is even" Case False MsgBox "Het nummer is oneven" End Select End Sub

Voorbeeld 8 - Controleren op weekdag/weekend (meerdere voorwaarden)

U kunt Case selecteren ook gebruiken om te controleren op meerdere waarden in dezelfde case.

De onderstaande code gebruikt bijvoorbeeld de huidige datum om aan te geven of het vandaag een weekdag of een weekend is (waarbij de weekenddagen zaterdag en zondag zijn)

Sub CheckWeekday() Case selecteren Weekday(Now) Case 1, 7 MsgBox "Vandaag is een weekend" Case Anders MsgBox "Vandaag is een weekdag" End Select End Sub

In de bovenstaande code controleren we op twee voorwaarden (1 en 7) in hetzelfde geval.

Opmerking: de functie Weekdag retourneert 1 voor zondag en 7 voor zaterdag.

Voorbeeld 9 - Geneste Select Case Statements

U kunt ook een Select Case-instructie nesten in een andere.

Hieronder staat een code die controleert of een dag een weekdag of een weekend is, en als het een weekend is, dan wordt weergegeven of het een zaterdag of een zondag is.

Sub CheckWeekday() Selecteer Case Weekdag (nu) Case 1, 7 Selecteer Case Weekdag (Now) Case 1 MsgBox "Vandaag is het zondag" Case Else MsgBox "Vandaag is het zaterdag" End Selecteer Case anders MsgBox "Vandaag is een weekdag" End Selecteer End Sub

In de bovenstaande code heb ik de Select Case genest om te controleren of het weekend een zaterdag of een zondag is.

Opmerking: het bovenstaande voorbeeld is bedoeld om het concept uit te leggen. Dit is niet de beste of de meest praktische manier om de weekdag/weekend te weten te komen.

Voorbeeld 10 - Tekststring controleren met Select Case

U kunt specifieke tekenreeksen controleren met Select Case en vervolgens code uitvoeren op basis daarvan.

In de onderstaande voorbeeldcode wordt de gebruiker gevraagd om de naam van zijn afdeling in te voeren en wordt de naam weergegeven van de persoon met wie hij verbinding moet maken voor onboarding.

Sub OnboardConnect() Dim Department As String Department = InputBox ("Voer uw afdelingsnaam in") Selecteer Case Department Case "Marketing" MsgBox "Maak contact met Bob Raines voor onboarding" Case "Finance" MsgBox "Maak verbinding met Patricia Cruz voor onboarding" Case "HR" MsgBox "Maak contact met Oliver Rand voor onboarding" Case "Admin" MsgBox "Maak contact met Helen Hume voor onboarding" Case Else MsgBox "Maak contact met Tony Randall voor onboarding" End Select End Sub

Ik hoop dat alle bovenstaande voorbeelden nuttig waren bij het begrijpen van het concept en de toepassing van Select Case in Excel VBA.

Misschien vind je de volgende VBA-zelfstudies misschien ook leuk:

  • Excel VBA-loops - voor volgende, doe terwijl, doe tot, voor elk.
  • Voor volgende lus in Excel VBA.
  • Hoe maak je een macro opnemen in Excel

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave