L'istruzione GoTo in VBA ti consente di passare a una riga di codice.
Per prima cosa crea un'etichetta di riga in qualsiasi punto del codice:
1 | Saltare: |
Quindi aggiungi all'istruzione "GoTo" per passare all'etichetta della riga
1 | Vai a Salta |
Vai a esempi
Questo esempio verifica l'anno. Se l'anno è il 2022 o successivo, andrà all'etichetta Salta la fila. Ciò consente di saltare il codice se vengono soddisfatte determinate condizioni.
123456789101112 | Sub GoTo_Example()Dim year As Integeranno = 2019Se anno >= 2019 Allora vai a Salta'Elabora dati per anni < 2022'MsgBox "L'anno è precedente al 2022"Saltare:Fine sottotitolo |
Vai a etichette di più righe
È inoltre possibile utilizzare le istruzioni GoTo per passare alle righe di codice pertinenti. Adeguiamo il nostro esempio precedente per andare a posizioni di codice diverse in base a quale anno è:
1234567891011121314151617181920212223242526272829303132 | Sub GoTo_Dichiarazione()Dim year As Integeranno = 2019Se anno = 2019 AlloraGoTo anno2019ElseIf anno = 2010 AlloraVai all'anno2020AltroVai all'anno 2021Finisci seanno2019:"Processo 2022"MsgBox "L'anno è il 2022"Vai a EndProcanno2020:"Processo 2022"MsgBox "L'anno è il 2022"Vai a EndProcanno2021:"Processo 2022+"MsgBox "L'anno è il 2022+"EndProc:Fine sottotitolo |
Notare "GoTo EndProc" prima di ogni etichetta di riga. Abbiamo aggiunto questa riga di codice in modo che quelle sezioni di codice vengano saltate a meno che non vi si acceda dal relativo "GoTo".
GoTo Error Handler Fine della procedura
Ora usiamo Gestione degli errori per andare alla fine della procedura se c'è un errore.
123456789101112 | Sub GoTo_OnError ()Dim i As IntegerIn caso di errore Vai a EndProcio = 5 / 0MsgBox ioEndProc:Fine sottotitolo |
Vai al codice di ripetizione
Il nostro ultimo esempio utilizzerà l'istruzione GoTo per ripetere del codice.
Di seguito utilizziamo una casella di messaggio Sì/No (fare clic per ulteriori informazioni) per confermare che l'utente riconosce l'avviso. Se fanno clic su "No", la finestra di messaggio verrà visualizzata di nuovo finché non faranno clic su "Sì" (vedi GIF di seguito).
1234567891011 | Sub GoTo_YesNoMsgBox()RipetiMsg:Dim risposta come numero interoanswer = MsgBox("ATTENZIONE: questo file è stato aperto come file di sola lettura, il che significa che tutte le modifiche apportate non verranno salvate a meno che/finché non si disponga dei diritti di accesso in scrittura. " & _Chr(13) & Chr(13) & "Seleziona File, Salva con nome per salvare una copia prima di lavorare su questo file." & vbNewLine & vbNewLine & "Hai capito?", vbExclamation + vbSìNo, "ATTENZIONE!")Se risposta = vbNo Allora GoTo RepeatMsg 'Ripeti finché l'utente non fa clic su "Sì"Fine sottotitolo |
VBA GoTo a Line Label in Access VBA
Tutti gli esempi precedenti funzionano esattamente allo stesso modo in Access VBA come in Excel VBA.
1234567 | Sub TestGoTo()In caso di errore GoTo finaleDoCmd.OpenForm "FrmClients"Esci Sottofine:MsgBox "Impossibile aprire il modulo"Fine sottotitolo |