Met de GoTo-instructie in VBA kunt u naar een regel code springen.
Maak eerst ergens in uw code een regellabel:
1 | Overslaan: |
Voeg vervolgens toe aan de "GoTo" -instructie om naar het regellabel te gaan
1 | Ga naar overslaan |
Ga naar voorbeelden
Dit voorbeeld test het jaar. Als het jaar 2022 of later is, gaat het naar het label Skip line. Hiermee kunt u code overslaan als aan bepaalde voorwaarden wordt voldaan.
123456789101112 | Sub GoTo_Example()Dim jaar als geheel getaljaar = 2019Als jaar >= 2019, ga dan overslaan'Procesgegevens voor jaren < 2022'MsgBox "Jaar is vóór 2022"Overslaan:Einde sub |
Ga naar meerdere regellabels
U kunt ook GoTo-instructies gebruiken om naar relevante coderegels te springen. Laten we ons vorige voorbeeld aanpassen om naar verschillende codelocaties te gaan op basis van welk jaar het is:
1234567891011121314151617181920212223242526272829303132 | Sub GoTo_Statement()Dim jaar als geheel getaljaar = 2019Als jaar = 2019 DanGa naar jaar2019ElseIf jaar = 2010 DanGa naar jaar2020AndersGa naar jaar 2021Stop alsjaar2019:'Proces 2022'MsgBox "Jaar is 2022"GoTo EndProcjaar2020:'Proces 2022'MsgBox "Jaar is 2022"GoTo EndProcjaar 2021:'Proces 2022+MsgBox "Jaar is 2022+"EndProc:Einde sub |
Let op de "GoTo EndProc" voor elk regellabel. We hebben deze regel code toegevoegd zodat die codesecties worden overgeslagen, tenzij ze worden geopend door de relevante "GoTo".
GoTo Error Handler Einde van procedure
Laten we nu Error Handling gebruiken om naar het einde van de procedure te gaan als er een fout is.
123456789101112 | Sub GoTo_OnError ()Dim ik als geheel getalBij fout GoTo EndProcik = 5 / 0MsgBox iEndProc:Einde sub |
Ga naar herhaalcode
In ons laatste voorbeeld wordt de GoTo-instructie gebruikt om een code te herhalen.
Hieronder gebruiken we een Ja / Nee Berichtenbox (Klik voor meer informatie) om te bevestigen dat de gebruiker de waarschuwing bevestigt. Als ze op 'Nee' klikken, wordt het berichtvenster opnieuw weergegeven totdat ze op 'Ja' klikken (zie GIF hieronder).
1234567891011 | Sub GoTo_YesNoMsgBox()HerhaalMsg:Dim antwoord als geheel getalanswer = MsgBox("WAARSCHUWING: dit bestand is geopend als een alleen-lezen bestand, wat betekent dat eventuele wijzigingen die u aanbrengt niet worden opgeslagen tenzij/totdat u schrijfrechten heeft. " & _Chr(13) & Chr(13) & "Selecteer Bestand, OpslaanAls om een kopie op te slaan voordat u in dit bestand gaat werken." & vbNewLine & vbNewLine & "Begrijpt u het?", vbUitroepteken + vbJaNee, "WAARSCHUWING!")Als antwoord = vbNee Ga dan naar RepeatMsg 'Herhaal totdat de gebruiker op "Ja" kliktEinde sub |
VBA Ga naar een regellabel in Access VBA
Alle bovenstaande voorbeelden werken in Access VBA precies hetzelfde als in Excel VBA.
1234567 | SubtestGoTo()Bij fout Ga naar eindeDoCmd.OpenForm "FrmClients"Sluit subeinde:MsgBox "Kan formulier niet openen"Einde sub |