Excel VBA-uttalande
Omkopplare i VBA liknar val av fallfunktion. Den enda skillnaden mellan dessa är att vi måste skriva mycket mindre koder i en switch i jämförelse för att välja fall. Vi kan skriva ett switch-uttalande i en delprocedur eller så kan vi skriva det som en användardefinierad funktion i VBA.
Switch in VBA utvärderar ett uttryck och ger utdata baserat på villkoren för det uttrycket. I utvalda ärendeförklaringar definierade vi fall att om vi har ett fall bör resultatet vara b och så vidare. Detta krävs för att skriva en hel del koder för utvalda ärenden, men i Switch kan vi slå samman alla villkor och uttryck i ett uttalande i stället för att ha flera ärenden.
Syntax för switch Statement
Switch beräknar det första uttrycket och om värdet är sant returnerar det värdet för uttrycket och om värdet för uttryck 1 inte är sant fortsätter det för samma beräkning för uttryck 2 och om resultatet är sant visas värde 2 men om uttrycket returneras är falskt, växlaren går vidare till ett annat uttryck.
Så vad händer om inget av uttrycket är sant och alla av dem returneras som falska, vi får körtidsfel i så fall om vi inte har ett förhindrande felhantering för ett sådant scenario.
Hur man använder switch Statement i Excel VBA?
Nedan följer de olika exemplen att använda VBA Switch Statement i Excel.
Du kan ladda ner denna VBA-switch Excel-mall här - VBA-switch Excel-mallVBA-omkopplare - exempel 1
Låt oss börja med det grundläggande exemplet för att få en uppfattning om VBA-switch-uttalandet. Vi kommer att ta input från användaren och baserat på den ingången kommer vi att definiera utgången. Vi kommer att ta input från nummer 1 till 5 och baserat på input kommer vi att ha fördefinierade resultat men om användaren anger något annat nummer än vårt intervall måste vi hantera det felet.
Följ stegen nedan för att använda Switch Statement i Excel VBA:
Steg 1: Från den visuella grundfliken anger du VB-redigeraren från utvecklarens flik.
Steg 2: Infoga en ny modul i fönstret Infoga i VB Editor-fönstret.
Steg 3: Förklara en ny delprocedur i den nya modulen som just skapats.
Koda:
Sub Sample () Slut Sub
Steg 4: Förklara två variabler A och B, en som heltal och en annan som en sträng.
Koda:
Subprov () Dim A Som heltal Dim B Som String End Sub
Steg 5: I variabel A lagras värdet av användaren med hjälp av inmatningsrutefunktionen.
Koda:
Underprov () Dim A som heltal Dim B som sträng A = InputBox ("Ange ett värde", "värde bör vara mellan 1 och 5") Slut sub
Steg 6: Nu i variabel B kommer vi att använda ett VBA-switch-uttalande för att utvärdera resultatet enligt ingång från användaren.
Koda:
Underprov () Dim A som heltal Dim B som sträng A = InputBox ("Ange ett värde", "värde bör vara mellan 1 och 5") B = switch (A = 1, "One", A = 2, "Two ", A = 3, " Tre ", A = 4, " Fyra ", A = 5, " Fem ") End Sub
Steg 5: Visa värdet som lagrats i B med hjälp av MSGBOX-funktionen.
Koda:
Underprov () Dim A som heltal Dim B som sträng A = InputBox ("Ange ett värde", "värde bör vara mellan 1 och 5") B = switch (A = 1, "One", A = 2, "Two ", A = 3, " Tre ", A = 4, " Fyra ", A = 5, " Fem ") MsgBox B End Sub
Steg 6: Kör ovanstående kod genom att trycka på F5-knappen och den ber oss att mata in ett heltal. Ange ett nummer 3 och tryck på ok för att se resultatet.
Steg 7: Låt oss köra igen koden och ange siffran 6 och se resultatet vi får.
Vi får körtidsfelet eftersom det inte finns något uttryck för att definiera i vårt switch-uttalande. Så i sådana scenarier måste vi ha en viss förebyggande felhantering.
Steg 8: För att övervinna detta körtidfel, förklarar en annan variabel Var som Variant.
Koda:
Underprov () Dim A Som heltal Dim B Som Sträng Dim var Som variant A = InputBox ("Ange ett värde", "värde bör vara mellan 1 och 5") B = Switch (A = 1, "One", A = 2, "Två", A = 3, "Tre", A = 4, "Fyra", A = 5, "Fem") MsgBox B End Sub
Steg 9: Innan vårt switch-uttalande använder on-goto-uttalandet så att om koden hittar ett fel så vet det vart den ska gå.
Koda:
Underprov () Dim A som heltal Dim B Som sträng Dim var Som variant A = InputBox ("Ange ett värde", "värde bör vara mellan 1 och 5") Vid fel GoTo var B = Switch (A = 1, "One ", A = 2, " Två ", A = 3, " Tre ", A = 4, " Fyra ", A = 5, " Fem ") MsgBox B End Sub
Steg 10: Definiera nu vad som kommer att hända om koden stöter på ett fel,
Koda:
Underprov () Dim A som heltal Dim B Som sträng Dim var Som variant A = InputBox ("Ange ett värde", "värde bör vara mellan 1 och 5") Vid fel GoTo var B = Switch (A = 1, "One ", A = 2, " Två ", A = 3, " Tre ", A = 4, " Fyra ", A = 5, " Fem ") MsgBox B var: MsgBox" Du har angett ogiltigt nummer "Resume Next End Sub
Steg 11: Låt oss nu köra koden igen genom att trycka på F5 eller klicka på Spela-knappen och inmatningsvärdet 6 och sedan Tryck på ok för att se det slutliga resultatet i fallet om växelmeddelande stöter på ett fel.
VBA-omkopplare - exempel # 2
I det här exemplet har jag data i blad 1 som innehåller namnet på vissa filmer och deras tidsvaraktighet i minuter. Baserat på deras längd jag vill definiera är filmen kort eller super lång. Titta på uppgifterna nedan.
Följ stegen nedan för att använda Switch Statement i Excel VBA:
Steg 1: Låt oss börja i samma modul och börja med att definiera en annan delprocedur enligt följande.
Sub Sample1 () Slut Sub
Steg 2: Förklara två variabler A och B, en som heltal en annan som sträng enligt följande,
Underprov1 () Dim A Som heltal Dim B Som stränghöjd Sub
Steg 3: Nu i variabel A låt oss lagra värdet på filmlängden för någon av filmerna.
Underprov1 () Dim A som heltal Dim B som sträng A = Område ("A3"). Offset (0, 1) .Value End Sub
Steg 4: Nu i variabel B, låt oss använda ett VBA-switch-uttalande för att definiera vad scenariot skulle vara för varje filmlängd.
Underprov1 () Dim A som heltal Dim B som sträng A = Range ("A3"). Offset (0, 1). Värde B = Switch (A <= 70, "Too Short", A <= 100, "Short ", A <= 120, " Long ", A <= 150, " Too Long ") End Sub
Steg 5: Vad händer nu om värdet är större än 180 ska vi ha en annan felhanterare här eller så kan vi helt enkelt skriva ett annat uttryck som True, Value. Eftersom alla andra värden kommer att returneras eftersom den falska koden kommer att köra detta uttryck.
Underprov1 () Dim A som heltal Dim B som sträng A = Range ("A3"). Offset (0, 1). Värde B = Switch (A <= 70, "Too Short", A <= 100, "Short ", A <= 120, " Long ", A <= 150, " Too Long ", True, " Boring ") End Sub
Steg 6: Visa värdet på B med funktionen msgbox.
Underprov1 () Dim A som heltal Dim B som sträng A = Range ("A3"). Offset (0, 1). Värde B = Switch (A <= 70, "Too Short", A <= 100, "Short ", A <= 120, " Long ", A <= 150, " Too Long ", True, " Boring ") MsgBox B End Sub
Steg 7: Kör koden genom att trycka på F5-tangenten eller genom att klicka på Play-knappen och se utgången.
A3-cellen har film 2 vars längd var 100 så utdata som kort.
VBA-omkopplare - exempel # 3
Låt använda switch statement för att skapa en användardefinierad funktion för exemplet ovan så att vi kan använda det i vårt kalkylblad när det behövs.
Följ stegen nedan för att använda Switch Statement i Excel VBA:
Steg 1: Förklara i samma modul en funktion som kallas filmlängd.
Funktion Filmlängd (Leng som heltal) som strängslut Funktion
Steg 2: Använd nu ett VBA Switch-uttalande för att definiera parametrarna baserat på längden enligt följande,
Funktion FilmLength (Leng som heltal) Som String FilmLength = Switch (Leng <= 70, "Too Short", Leng <= 100, "Short", Leng <= 120, "Long", Leng <= 150, "Too Long", Sant, "tråkigt") slutfunktion
Steg 3: Låt oss nu gå i kalkylbladet där vi hade våra data, typ = FilmLength (
Steg 4: Vi kan se att vår funktion där ger ett argument som värden i cell B2.
Steg 5: Tryck på enter när du har använt formeln.
Steg 6: Dra nu funktionen till cell C10 och se resultatet.
Saker att komma ihåg
- Switch-funktion utvärderar uttrycket i den. Om det första uttrycket utvärderas sant, utvärderar det inte de andra uttrycken.
- Om inget av uttrycket är sant returnerar det ett körtidfel.
- Vi måste ha en felhanterare i switch-uttalande eller -uttryck så att om varje uttryck returneras falskt stöter vi inte på ett körtidsfel.
- En brytare liknar val av ärende.
Rekommenderade artiklar
Detta är en guide till VBA Switch. Här diskuterar du hur man använder switch-uttalande i Excel VBA tillsammans med några praktiska exempel och nedladdningsbara Excel-mall. Du kan också gå igenom våra andra föreslagna artiklar -
- Användning av VBA InStr-funktion
- Excel SWITCH-funktion
- VBA slumpmässigt nummer
- CONCATENATE-funktion i Excel