Excel VBA- växelväska
I VBA Switch Case, när vi logiskt måste kontrollera eller analysera ett villkor och utföra de olika koderaderna baserade på samma, använder vi IF-Else villkorliga uttalanden. På liknande sätt finns det ytterligare ett uttalande Switch Case som är mer känt som Select Case statement som kan kontrollera eller analysera flera logiska villkor och köra kodraderna baserat på dessa. När du har tre eller flera logiska villkor att kontrollera, rekommenderas att du använder Select Case eller Switch Case istället för ett konventionellt IF-Else-uttalande. Eftersom det gör VBA-koden snabbare och mer begriplig istället för kapslade IF-Else-uttalanden i sådana fall.
Växla fall / välj fall
Switch Case eller Select Case i VBA fungerar på liknande linjer som i IF-Else-uttalanden. Den kontrollerar flera logiska / villkorade uttryck mot olika värden (fall). Så snart något av fallet matchar villkoret (blir giltigt för det givna villkoret) kör systemet det fallet och vilar andra fall ignoreras att utföra. I det fall det finns två fall som gäller för det givna villkoret, kommer endast det första att utföras med företrädesrätten.
Syntax för Switch Case / Select Case är som nedan:
Select Case
Case value_1
Code to Execute when Expression = value_1
Case value_2
Code to Execute when Expression = value_2
Case value_3
Code to Execute when Expression = value_3
.
.
.
Case value_n
Code to Execute when Expression = value_n
Case Else
Code to Execute when no case value meets the expression/logical test.
End Select
Var,
Uttryck: Detta är ett uttryck som vi ville kontrollera eller analysera med olika fallvärden.
värde_1, värde_2, värde_3, … är de logiska villkoren som behövs för att kontrolleras för det givna uttrycket.
Hur använder du ärende-uttalandet i Excel VBA?
Vi kommer att lära dig att använda Switch Case-uttalandet i Excel genom att använda VBA-koden.
Du kan ladda ner den här VBA-växellådan Excel-mall här - VBA-växellåsen Excel-mallVBA-växelväska - exempel # 1
Vi kontrollerar om det givna antalet är mindre än 100 eller mer än 100. Följ stegen nedan:
Steg 1: Sätt i en ny modul i Visual Basic Editor (VBE). Klicka på Infoga- fliken> välj Modul.
Steg 2: Definiera en ny delprocedur i den infogade modulen som kan hålla ditt makro.
Koda:
Sub switch_case_example1 () Slut Sub
Steg 3: Definiera en ny variabel med namnet usrInpt som kan innehålla användarvärdet. Använd VBA InputBox- funktionen för att skapa en inmatningsbox som tar användarvärden genom variabel usrInpt .
Koda:
Sub switch_case_example1 () Dim usrInpt Som heltal usrInpt = InputBox ("Vänligen ange ditt värde") End Sub
Steg 4: Använd Select Case- uttalandet och ange det värde som tillhandahålls av användaren via variabel usrInpt . Detta är det uttryck vi behöver kontrollera med logiska förhållanden.
Koda:
Sub switch_case_example1 () Dim usrInpt Som heltal usrInpt = InputBox ("Vänligen ange ditt värde") Välj Case usrInpt End Sub
Steg 5: Ange det första logiska testet som ska kontrolleras under ärendeavtalet enligt följande.
Koda:
Sub switch_case_example1 () Dim usrInpt Som heltal usrInpt = InputBox ("Vänligen ange ditt värde") Välj Case usrInpt Fall är <100 End Sub
Steg 6: Använd MsgBox-funktionen för att lägga till ett utgångsmeddelande om fallet är <100 är sant.
Koda:
Sub switch_case_example1 () Dim usrInpt Som heltal usrInpt = InputBox ("Vänligen ange ditt värde") Välj Case usrInpt Fall är <100 MsgBox "Det angivna numret är mindre än 100" End Sub
Steg 7: Nu måste vi tillhandahålla ett körbart uttalande när värdet för usrInpt är större än 100. Lägg till ett ärende och MsgBox för att uppnå detta.
Koda:
Sub switch_case_example1 () Dim usrInpt Som heltal usrInpt = InputBox ("Vänligen ange ditt värde") Välj Case usrInpt Case Is 100 MsgBox "Det angivna antalet är större än 100" End Sub
Steg 8: Tänk om värdet som användaren tillhandahåller exakt är 100? Vi har inte lagt till något fall för det. Låt oss lägga till den som ger användaren ett meddelande om att värdet han angav är 100.
Koda:
Sub switch_case_example1 () Dim usrInpt Som heltal usrInpt = InputBox ("Vänligen ange ditt värde") Välj Case usrInpt Case Is 100 MsgBox "Det angivna numret är större än 100" Case Is = 100 MsgBox "Det angivna numret är 100" End Sub
Steg 9: Vi måste avsluta Select Case-uttalandet. Använd slutval för att avsluta skapad slinga.
Koda:
Sub switch_case_example1 () Dim usrInpt Som heltal usrInpt = InputBox ("Vänligen ange ditt värde") Välj Case usrInpt Case Is 100 MsgBox "Det angivna antalet är större än 100" Case Is = 100 MsgBox "Det angivna numret är 100" End Select End Sub
Steg 10: Kör nu den här koden genom att trycka på Kör-knappen eller F5. En ny popup-ruta visas och ber om värdet som ska kontrolleras. Jag skriver in ett värde som 110 och trycker på OK-knappen i inmatningsrutan. Eftersom antalet jag anger är större än 100, så snart jag klickar på OK, kommer ett nytt meddelande att dyka upp på min skärm som säger "Det angivna antalet är större än 100".
VBA-växellåda - exempel # 2
Anta att vi vill fånga elevernas betyg baserat på deras betyg. Se stegen nedan om hur vi kan uppnå detta.
Steg 1: Definiera en ny delprocedur som heter switch_case_example2 .
Koda:
Sub switch_case_example2 () Slut Sub
Steg 2: Definiera två nya variabler - markerar som heltal och betyg som en sträng med hjälp av Dim-sats i den delprocedur som skapats.
Koda:
Sub switch_case_example2 () Dim-märken Som heltal Dim-betyg Som String End Sub
Steg 3: Använd funktionen VBA InputBox genom vilken användaren kan mata in värdet för variabla markeringar .
Koda:
Sub switch_case_example2 () Dim-markeringar som heltal Dim-betyg Som Stringmarks = InputBox ("Vänligen ange varumärkena") End Sub
Steg 4: Använd Select Case- satsen och ange variabla markeringar som ett uttryck som ska kontrolleras.
Koda:
Sub switch_case_example2 () Dim-markeringar som heltal Dim-betyg Som Strängmärken = InputBox ("Vänligen ange märken") Välj Fallmarkeringar Slut Sub
Eftersom vi vill tilldela betyg till eleverna baserat på de poäng de anger, måste vi först definiera betyg.
Steg 5: Använd fallbeskrivningen för att kontrollera om markeringarna är mindre än 35. Om så är fallet, tilldela värdet som "F" till variabla betyg.
Koda:
Sub switch_case_example2 () Dim-märken Som heltal Dim-betyg Som Stringmarks = InputBox ("Vänligen ange märken") Välj Case-märken Case Is <35 grade = "F" End Sub
Steg 6: Om markeringarna är mellan 35 och 45, tilldela värdet som "D" till variabla kvaliteter.
Koda:
Sub switch_case_example2 () Dim-märken Som heltal Dim-betyg Som Strängmärken = InputBox ("Vänligen ange märken") Välj Fall-märken Case Is <35 grade = "F" Case 35 To 45 grade = "D" End Sub
Steg 7: Om de inmatade markeringarna ligger mellan 46 till 55, bör värdet "C" tilldelas variabla betyg.
Koda:
Sub switch_case_example2 () Dim-märken Som heltal Dim-betyg Som Strängmärken = InputBox ("Vänligen ange märken") Välj Fall-märken Case Is <35 grade = "F" Case 35 To 45 grade = "D" Case 46 To 55 grade = "C" End Sub
Steg 8: När markeringarna ligger inom intervallet 56 till 65, bör värdet som tilldelas variabla betyg vara ”B”.
Koda:
Sub switch_case_example2 () Dim-märken Som heltal Dim-betyg Som Strängmärken = InputBox ("Vänligen ange märken") Välj Fall-märken Case Is <35 grade = "F" Case 35 To 45 grade = "D" Case 46 To 55 grade = "C" Fall 56 till 65 betyg = "B" Slut sub
Steg 9: För betyg mellan 66 till 75 ska betyget vara ”A”.
Koda:
Sub switch_case_example2 () Dim-märken Som heltal Dim-betyg Som Strängmärken = InputBox ("Vänligen ange märken") Välj Fall-märken Case Is <35 grade = "F" Case 35 To 45 grade = "D" Case 46 To 55 grade = "C" Fall 56 till 65 betyg = "B" Fall 66 till 75 betyg = "A" End Sub
Steg 10: Om de inmatade markeringarna är mer än 75, bör betygsvariabel tilldelas ett värde som "A +"
Koda:
Sub switch_case_example2 () Dim-märken Som heltal Dim-betyg Som Stringmarks = InputBox ("Vänligen ange märken") Välj Case-märken Case Is 75 grade = "A +" End Sub
Steg 11: Använd Slut Välj stäng Select Case-loopen.
Koda:
Sub switch_case_example2 () Dim-märken Som heltal Dim-betyg Som Strängmärken = InputBox ("Vänligen ange märken") Välj Case-märken Case Is 75 grade = "A +" End Välj End Sub
Steg 12: Nu måste vi kontrollera vilket betyg som är förknippat med betyg som en elev har matat in. För att uppnå detta, använd MsgBox- funktionen på ett sådant sätt att den anger de uppnådda betyg i en meddelanderuta.
Koda:
Sub switch_case_example2 () Dim-markeringar som heltal Dim-betyg Som Strängmärken = InputBox ("Vänligen ange märken") Välj Case-märken Case Is 75 grade = "A +" End Select MsgBox "Grad uppnådd är:" & betyg End Sub
Steg 13: Kör den här koden genom att trycka på F5 eller Run-knappen och du kan se en VBA-inmatningsruta som ber om ett märkvärde. Jag kommer att ange markeringarna som 72 och trycka på OK-knappen som finns i inmatningsrutan. Så snart jag trycker på OK-knappen inuti inmatningsrutan får jag en meddelanderuta som anger de betyg som är förknippade med de markerade inmatningarna.
Så här kan vi använda Switch / Select Case-uttalandet inuti VBA.
Saker att komma ihåg
- Switch case är faktiskt en synonym för Select Case-uttalande i VBA. Det har kallats så eftersom vi med hjälp av detta uttalande kan växla mellan de olika utgångarna samtidigt.
- Detta uttalande kan användas som ett alternativ till IF-Else-slingan när vi har tre eller flera villkor att kontrollera.
- Det är OK om du inte använder ELSE-fall i Select Case-uttalande. Men i så fall måste du se till att minst ett villkor är sant i hela slingan.
Rekommenderade artiklar
Detta är en guide till VBA Switch Case. Här diskuterar vi hur du använder switch case statement i Excel VBA tillsammans med praktiska exempel och nedladdningsbar Excel-mall. Du kan också gå igenom våra andra föreslagna artiklar -
- VBA-samling (exempel)
- VBA IF-uttalanden | Excel-mallar
- Hur använder jag Excel VBA sorteringsfunktion?
- VBA While Loop (exempel med Excel-mall)
- VBA Environ