A instrução GoTo no VBA permite que você pule para uma linha de código.
Primeiro, crie um rótulo de linha em qualquer lugar do seu código:
1 | Pular: |
Em seguida, adicione a declaração “GoTo” para pular para o rótulo de linha
1 | GoTo Skip |
Exemplos GoTo
Este exemplo testa o ano. Se o ano for 2022 ou posterior, ele irá para o rótulo da linha de salto. Isso permite que você ignore o código se certas condições forem atendidas.
123456789101112 | Sub GoTo_Example ()Dim year As Integerano = 2019Se ano> = 2019 Então GoTo Skip'Processar dados para anos <2022MsgBox "O ano é anterior a 2022"Pular:End Sub |
GoTo Multiple Line Labels
Você também pode usar as instruções GoTo para pular para as linhas de código relevantes. Vamos ajustar nosso exemplo anterior para ir para diferentes locais de código com base em que ano é:
1234567891011121314151617181920212223242526272829303132 | Sub GoTo_Statement ()Dim year As Integerano = 2019Se ano = 2019, entãoGoTo year2019ElseIf year = 2010 ThenGoTo year2020OutroGoTo year2021Fim seano2019:'Processo 2022MsgBox "O ano é 2022"GoTo EndProcano 2020:'Processo 2022MsgBox "O ano é 2022"GoTo EndProcano 2021:'Processo 2022+MsgBox "O ano é 2022+"EndProc:End Sub |
Observe o “GoTo EndProc” antes de cada rótulo de linha. Adicionamos essa linha de código para que essas seções de código sejam ignoradas, a menos que sejam acessadas pelo “GoTo” relevante.
Fim do procedimento do manipulador de erros GoTo
Agora vamos usar o Tratamento de erros para ir para o final do procedimento se houver um erro.
123456789101112 | Sub GoTo_OnError ()Dim i As IntegerOn Error GoTo EndProci = 5/0MsgBox iEndProc:End Sub |
GoTo Repeat Code
Nosso último exemplo usará a instrução GoTo para repetir algum código.
Abaixo, estamos usando uma caixa de mensagem Sim / Não (Clique para saber mais) para confirmar que o usuário reconhece o aviso. Se eles clicarem em 'Não', a caixa de mensagem será exibida novamente até que eles cliquem em 'Sim' (veja GIF abaixo).
1234567891011 | Sub GoTo_YesNoMsgBox ()RepeatMsg:Dim answer As Integeranswer = MsgBox ("AVISO: este arquivo foi aberto como um arquivo somente leitura, o que significa que as alterações feitas não serão salvas a menos que / até que você tenha direitos de acesso de gravação." & _Chr (13) e Chr (13) & "Selecione Arquivo, Salvar Como para salvar uma cópia antes de trabalhar neste arquivo." & vbNewLine & vbNewLine & "Você entendeu?", vbExclamation + vbYesNo, "AVISO!")If answer = vbNo Then GoTo RepeatMsg 'Repita até que o usuário clique em "Sim"End Sub |
VBA GoTo a Line Label no Access VBA
Todos os exemplos acima funcionam exatamente da mesma forma no Access VBA e no Excel VBA.
1234567 | Sub TestGoTo ()Em erro GoTo finalizandoDoCmd.OpenForm "FrmClients"Sair do Subfinal:MsgBox "Não é possível abrir o formulário"End Sub |