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 andere vergelijkbare constructie waarmee u op meerdere voorwaarden kunt controleren, is de instructie SELECT CASE.

Case selecteren is handig als u drie of meer voorwaarden 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 Select Case-instructie handig is als je het cijfer van een wilt halen student op basis van de punten die hij / zij heeft gescoord (als voorbeeld behandeld verderop in deze tutorial).

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

Deze tutorial behandelt:

Select Case Syntax

Hieronder staat de syntaxis van Select Case in 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: dit is de uitdrukking waarvan we de waarde analyseren door verschillende gevallen te gebruiken (beter uitgelegd met de onderstaande voorbeelden).
  • Conditie_1, Conditie_2,…: dit zijn de condities waarop de tekstexpressie wordt getest. Als het aan de voorwaarde voldoet, wordt het codeblok voor de gegeven voorwaarde uitgevoerd.

Voor elk Select Case-statement dat je gebruikt, moet je het End Select-statement gebruiken.

Opmerking: zodra aan een voorwaarde is voldaan, verlaat VBA de construct select case. Dus als u vijf voorwaarden heeft en aan de tweede voorwaarde is voldaan, verlaat VBA Select Case – en de rest van de voorwaarden wordt niet getest.

Case-voorbeelden selecteren

Nu naar om beter te begrijpen hoe u de Select Case-instructie in VBA kunt gebruiken, laten we een paar voorbeelden doornemen.

Merk op dat de meeste voorbeelden in deze tutorial bedoeld zijn om het concept uit te leggen. Dit kan wel of niet de beste manier zijn om het werk gedaan te krijgen.

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

Voorbeeld 1 – Controleer de cijfers

In het onderstaande voorbeeld vraagt de code de gebruiker om een nummer tussen 1 en 5 in te voeren, en toont vervolgens een berichtvenster met het nummer dat de gebruiker heeft ingevoerd.

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 op dat deze code verre van nuttig is en zelfs niet waterdicht. Als u bijvoorbeeld 6 of een willekeurige tekenreeks invoert, doet dit niets. Maar zoals ik al zei, mijn bedoeling hier is om te laten zien hoe Select Case werkt.

Voorbeeld 2 – Select Case gebruiken met IS Condition

Je kunt een IS voorwaarde gebruiken met de Select Case construct om de waarde van getallen te controleren.

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

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

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 catch-all en alles wat niet in een van de vorige gevallen valt, wordt behandeld door de Case Else.

Hieronder staat een voorbeeldcode waarin ik Case Else heb gebruikt:

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

Voorbeeld 4 – Een reeks getallen gebruiken

In Select Case, u kunt ook een reeks getallen controleren.

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

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

Voorbeeld 5 – Verkrijg het cijfer op basis van de gescoorde punten

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

Hier is een voorbeeld dat dichter bij een real-world voorbeeld ligt, waar u Select Case in Excel VBA kunt gebruiken.

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

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

In de bovenstaande code heb ik specificeerde alle voorwaarden – voor cijfers 0 – 100.

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

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

Voorbeeld 6 – Een aangepaste functie (UDF) maken met behulp van Select Case

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

U kunt ook een aangepaste functie (door de gebruiker gedefinieerde functie) maken die kan worden gebruikt net als elke normale werkbladfunctie, en die zal terugkeren het cijfer van de leerlingen.

Hieronder staat de code die de aangepaste formule zal maken:

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

Zodra u deze code in de module, kunt u de functie GetGrade in het werkblad gebruiken zoals hieronder weergegeven.

Voorbeeld 7 – Controleer ODD / EVEN met Select Case

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

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

U kunt ook Case selecteren gebruiken om te controleren op meerdere waarden in hetzelfde geval.

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

Sub CheckWeekday()Select Case Weekday(Now)Case 1, 7MsgBox "Today is a Weekend"Case ElseMsgBox "Today is a Weekday"End SelectEnd 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-statement in een ander nesten.

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

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

In de bovenstaande code, Ik heb 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 meest praktische manier om doordeweekse dagen / weekend te achterhalen.

Voorbeeld 10 – Tekststring controleren met Select Case

U kunt specifieke strings controleren met Select Case en vervolgens voer code uit die erop is gebaseerd.

In de onderstaande voorbeeldcode wordt de gebruiker gevraagd om de naam van de afdeling in te voeren en de naam van de persoon waarmee ze verbinding moeten maken voor onboarding.

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

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-tutorials ook leuk:

  • Excel VBA-lussen – voor volgende, doen terwijl, doen tot, voor elk.
  • Voor volgende lus in Excel VBA.
  • Hoe een macro opnemen in Excel.

Write a Comment

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *