Excel VBA Switch verklaring
Schakelaar in VBA is vergelijkbaar met het selecteren van de hoofdletterfunctie. Het enige verschil tussen deze is dat we veel mindere codes in een schakelaar moeten schrijven in vergelijking met een bepaald geval. We kunnen een schakelinstructie schrijven in een subprocedure of we kunnen deze schrijven als een door de gebruiker gedefinieerde functie in VBA.
Switch in VBA evalueert een uitdrukking en geeft de uitvoer op basis van de voorwaarden voor die uitdrukking. In select case-statements hebben we cases gedefinieerd dat als we een case hebben, het resultaat b moet zijn, enzovoort. Dit vereiste om veel codes te schrijven voor bepaalde case-statements, maar in Switch kunnen we alle voorwaarden en uitdrukkingen in één statement samenvoegen in plaats van meerdere case-statements te hebben.
Syntaxis van Switch-verklaring
Schakelaar berekent de eerste uitdrukking en als de waarde waar is, wordt de waarde voor de uitdrukking geretourneerd en als de waarde voor uitdrukking 1 niet waar is, gaat deze door voor dezelfde berekening voor uitdrukking 2 en als het resultaat waar is, wordt waarde 2 weergegeven, maar als de uitdrukking wordt geretourneerd is onwaar, schakelt over naar een andere uitdrukking.
Dus wat gebeurt er als geen van de expressie waar is en ze allemaal als False worden geretourneerd, krijgen we in een dergelijk geval een runtime-fout tenzij we een preventieve foutafhandeling hebben voor een dergelijk scenario.
Hoe Switch Statement gebruiken in Excel VBA?
Hieronder staan de verschillende voorbeelden om VBA Switch Statement in Excel te gebruiken.
U kunt deze VBA Switch Excel-sjabloon hier downloaden - VBA Switch Excel-sjabloonVBA-schakelaar - Voorbeeld # 1
Laten we beginnen met het basisvoorbeeld om een idee te krijgen van de VBA-schakelopdracht. We nemen input van de gebruiker en op basis van die input definiëren we de output. We nemen invoer van nummer 1 tot 5 en op basis van de invoer hebben we vooraf gedefinieerde resultaten, maar als de gebruiker een ander nummer dan ons bereik invoert, moeten we die fout oplossen.
Volg de onderstaande stappen om Switch Statement in Excel VBA te gebruiken:
Stap 1: Voer op het visuele basistabblad de VB-editor in op het tabblad van de ontwikkelaar.
Stap 2: Voeg in het venster VB Editor een nieuwe module in vanaf het tabblad Invoegen.
Stap 3: Declareer een nieuwe subprocedure in de nieuwe module die u zojuist hebt gemaakt.
Code:
Sub-monster () Einde Sub
Stap 4: Declareer twee variabelen A en B, een als geheel getal en een ander als een tekenreeks.
Code:
Sub-monster () Dim A als geheel getal Dim B als tekenreeks-einde Sub
Stap 5: Sla in variabele A de waarde op die door de gebruiker is opgegeven met behulp van de invoervakfunctie.
Code:
Sub-voorbeeld () Dim A als geheel getal Dim B als tekenreeks A = InputBox ("Voer een waarde in", "waarde moet tussen 1 en 5 zijn") Sub-einde
Stap 6: Nu zullen we in Variabele B een VBA-schakelinstructie gebruiken om het resultaat te hebben geëvalueerd op basis van de invoer die door de gebruiker is verstrekt.
Code:
Subvoorbeeld () Dim A als geheel getal Dim B als tekenreeks A = InputBox ("Voer een waarde in", "de waarde moet tussen 1 en 5 zijn") B = Schakelaar (A = 1, "Een", A = 2, "Twee ", A = 3, " Three ", A = 4, " Four ", A = 5, " Five ") End Sub
Stap 5: Geef de waarde weer die is opgeslagen in B met de MSGBOX-functie.
Code:
Subvoorbeeld () Dim A als geheel getal Dim B als tekenreeks A = InputBox ("Voer een waarde in", "de waarde moet tussen 1 en 5 zijn") B = Schakelaar (A = 1, "Een", A = 2, "Twee ", A = 3, " Drie ", A = 4, " Vier ", A = 5, " Vijf ") MsgBox B End Sub
Stap 6: Voer de bovenstaande code uit door op F5 te drukken en deze vraagt ons om een geheel getal in te voeren. Geef een nummer 3 op en druk op ok om het resultaat te bekijken.
Stap 7: Laten we nu de code opnieuw uitvoeren en het nummer 6 invoeren en het resultaat zien dat we krijgen.
We krijgen de runtime-fout omdat er in onze switch-instructie geen uitdrukking is om 6 te definiëren. Dus in dergelijke scenario's moeten we preventief omgaan met fouten.
Stap 8: Om deze runtime-fout te verhelpen, declareert u een andere variabele Var als Variant.
Code:
Subvoorbeeld () Dim A als geheel getal Dim B als tekenreeks Dim var als variant A = InputBox ("Voer een waarde in", "waarde moet tussen 1 en 5 zijn") B = Schakelaar (A = 1, "One", A = 2, "Twee", A = 3, "Drie", A = 4, "Vier", A = 5, "Vijf") MsgBox B End Sub
Stap 9: Gebruik vóór onze schakelinstructie de instructie on error goto zodat de code weet waar hij naartoe moet als de code een fout vindt.
Code:
Subvoorbeeld () Dim A als geheel getal Dim B als tekenreeks Dim var als variant A = InputBox ("Voer een waarde in", "waarde moet tussen 1 en 5 zijn") Bij fout GoTo var B = schakelaar (A = 1, "One ", A = 2, " Twee ", A = 3, " Drie ", A = 4, " Vier ", A = 5, " Vijf ") MsgBox B End Sub
Stap 10: Definieer nu wat er gebeurt als de code een fout tegenkomt,
Code:
Subvoorbeeld () Dim A als geheel getal Dim B als tekenreeks Dim var als variant A = InputBox ("Voer een waarde in", "waarde moet tussen 1 en 5 zijn") Bij fout GoTo var B = schakelaar (A = 1, "One ", A = 2, " Twee ", A = 3, " Drie ", A = 4, " Vier ", A = 5, " Vijf ") MsgBox B var: MsgBox" U hebt een ongeldig nummer ingevoerd "Hervatten Volgende einde Sub
Stap 11: Laten we nu de code opnieuw uitvoeren door op F5 te drukken of op de knop Afspelen te klikken en waarde 6 in te voeren en vervolgens op OK te drukken om het eindresultaat te zien in het geval dat de schakelinstructie een fout tegenkomt.
VBA-schakelaar - Voorbeeld # 2
Voor dit voorbeeld heb ik gegevens in blad 1 die de naam van sommige films en hun tijdsduur in minuten bevat. Op basis van hun lengte die ik wil definiëren, is de film kort, lang of super lang. Bekijk de onderstaande gegevens.
Volg de onderstaande stappen om Switch Statement in Excel VBA te gebruiken:
Stap 1: Laten we in dezelfde module beginnen en beginnen met het definiëren van een andere subprocedure als volgt.
Sub Sample1 () Einde Sub
Stap 2: Declareer twee variabelen A en B, een als geheel getal een ander als string als volgt,
Sub Sample1 () Dim A als Integer Dim B als String End Sub
Stap 3: Laten we nu in variabele A de waarde van de filmlengte opslaan voor een van de films.
Sub Sample1 () Dim A als geheel getal Dim B als tekenreeks A = bereik ("A3"). Offset (0, 1). Waarde-einde Sub
Stap 4: Laten we nu in Variabele B een VBA-schakelinstructie gebruiken om te definiëren wat het scenario zou zijn voor elke filmlengte.
Sub Sample1 () Dim A als geheel getal Dim B als tekenreeks A = bereik ("A3"). Offset (0, 1). Waarde B = schakelaar (A <= 70, "te kort", A <= 100, "kort ", A <= 120, " Lang ", A <= 150, " Te lang ") Einde Sub
Stap 5: Wat nu als de waarde groter is dan 180, moeten we hier een andere foutafhandelaar hebben of we kunnen gewoon een andere uitdrukking schrijven als Waar, Waarde. Omdat alle andere waarden worden geretourneerd omdat de valse code deze expressie uitvoert.
Sub Sample1 () Dim A als geheel getal Dim B als tekenreeks A = bereik ("A3"). Offset (0, 1). Waarde B = schakelaar (A <= 70, "te kort", A <= 100, "kort ", A <= 120, " Lang ", A <= 150, " Te lang ", True, " Saai ") Einde Sub
Stap 6: Geef de waarde van B weer met behulp van de msgbox-functie.
Sub Sample1 () Dim A als geheel getal Dim B als tekenreeks A = bereik ("A3"). Offset (0, 1). Waarde B = schakelaar (A <= 70, "te kort", A <= 100, "kort ", A <= 120, " Lang ", A <= 150, " Te lang ", True, " Saai ") MsgBox B End Sub
Stap 7: Voer de code uit door op F5 te drukken of door op de knop Afspelen te klikken en de uitvoer te bekijken.
A3 cel heeft film 2 waarvan de lengte 100 was, dus de uitvoer zo kort.
VBA-schakelaar - Voorbeeld # 3
Laten we de instructie switch gebruiken om een door de gebruiker gedefinieerde functie voor het bovenstaande voorbeeld te maken, zodat we deze wanneer nodig in ons werkblad kunnen gebruiken.
Volg de onderstaande stappen om Switch Statement in Excel VBA te gebruiken:
Stap 1: Declareer in dezelfde module een functie die filmlengte wordt genoemd.
Functie FilmLength (Leng As Integer) As String End Function
Stap 2: Gebruik nu een VBA Switch-instructie om de parameters op basis van de lengte als volgt te definiëren,
Functie FilmLength (Leng As Integer) As String FilmLength = Schakelaar (Leng <= 70, "Te kort", Leng <= 100, "Kort", Leng <= 120, "Lang", Leng <= 150, "Te lang", True, "Saai") Eindfunctie
Stap 3: Laten we nu naar het werkblad gaan waar we onze gegevens hadden, type = FilmLength (
Stap 4: We kunnen zien dat onze functie daar een argument geeft als waarden in cel B2.
Stap 5: Druk na het toepassen van de formule op enter.
Stap 6: Sleep de functie nu naar cel C10 en bekijk het resultaat.
Dingen om te onthouden
- Schakelfunctie evalueert de uitdrukking erin. Als de eerste uitdrukking waar wordt geëvalueerd, worden de andere uitdrukkingen niet geëvalueerd.
- Als geen van de expressie waar is, wordt een runtime-fout geretourneerd.
- We moeten een foutafhandeling hebben in de instructie switch of expressie, zodat als elke expressie false wordt geretourneerd, we geen runtime-fout tegenkomen.
- Een schakelaar lijkt op een select case-statement.
Aanbevolen artikelen
Dit is een handleiding voor VBA Switch. Bespreek hier hoe u de instructie switch in Excel VBA kunt gebruiken, samen met enkele praktische voorbeelden en een downloadbare Excel-sjabloon. U kunt ook onze andere voorgestelde artikelen doornemen -
- Gebruik van de VBA InStr-functie
- Excel SWITCH-functie
- VBA willekeurig nummer
- CONCATENATE Functie in Excel