GoTo -erklæringen i VBA giver dig mulighed for at springe til en kodelinje.
Opret først en linjemærke hvor som helst i din kode:
1 | Springe: |
Tilføj derefter til "GoTo" -udsagn for at springe til linjemærkaten
1 | Gå til spring |
GoTo -eksempler
Dette eksempel tester året. Hvis året er 2022 eller senere, går det til etiketten Spring linje over. Dette giver dig mulighed for at springe over kode, hvis visse betingelser er opfyldt.
123456789101112 | Sub GoTo_Example ()Dim år som heltalår = 2019Hvis år> = 2019 Så spring til'Behandl data for år <2022MsgBox "År er før 2022"Springe:Afslut Sub |
GoTo flere linjemærker
Du kan også bruge GoTo -sætninger til at springe til relevante kodelinjer. Lad os justere vores tidligere eksempel til at gå til forskellige kodeplaceringer baseret på hvilket år det er:
1234567891011121314151617181920212223242526272829303132 | Sub GoTo_Statement ()Dim år som heltalår = 2019Hvis år = 2019 SåGå til år 2019ElseIf år = 2010 SåGå til år 2020AndetGå til år 2020Afslut Hvisår2019:'Proces 2022MsgBox "År er 2022"GoTo EndProcår 2020:'Proces 2022MsgBox "År er 2022"GoTo EndProcår2021:'Behandl 2022+MsgBox "År er 2022+"EndProc:Afslut Sub |
Bemærk "GoTo EndProc" før hver linjemærke. Vi tilføjede denne kodelinje, så disse kodesektioner springes over, medmindre der er adgang til den relevante "GoTo".
GoTo Error Handler Afslutning af procedure
Lad os nu bruge Fejlhåndtering til at gå til slutningen af proceduren, hvis der er en fejl.
123456789101112 | Sub GoTo_OnError ()Dim i As IntegerVed fejl GoTo EndProci = 5/0MsgBox iEndProc:Afslut Sub |
GoTo Gentag kode
Vores sidste eksempel vil bruge GoTo -erklæringen til at gentage nogle kode.
Nedenfor bruger vi en Ja / Nej -meddelelsesboks (klik for at få mere at vide) for at bekræfte, at brugeren anerkender advarslen. Hvis de klikker på 'Nej', vises meddelelsesboksen igen, indtil de klikker på 'Ja' (se GIF nedenfor).
1234567891011 | Sub GoTo_YesNoMsgBox ()Gentag besked:Dim svar som heltalanswer = MsgBox ("ADVARSEL: Denne fil blev åbnet som en skrivebeskyttet fil, hvilket betyder, at eventuelle ændringer, du foretager, ikke gemmes, medmindre/indtil du har skriveadgangsrettigheder." & _Chr (13) & Chr (13) & "Vælg File, SaveAs for at gemme en kopi, før du arbejder i denne fil." & vbNewLine & vbNewLine & "Forstår du?", vbExclamation + vbYesNo, "ADVARSEL!")Hvis svar = vbNo Så skal GoTo RepeatMsg 'Gentag, indtil brugeren klikker på "Ja"Afslut Sub |
VBA Gå til en linjemærke i Access VBA
Alle ovenstående eksempler fungerer nøjagtig det samme i Access VBA som i Excel VBA.
1234567 | Sub TestGoTo ()Ved fejl GoTo endingDoCmd.OpenForm "FrmClients"Afslut SubSlutning:MsgBox "Kan ikke åbne formular"Afslut Sub |