VBA – GoTo: Ir para um Rótulo de Linha
In this Article
A instrução GoTo no VBA lhe permite pular a execução para uma determinada linha de código identificada com um rótulo.
Para fazer isso, basta criar um Rótulo de Linha (Line Label) em qualquer lugar do seu código, como no exemplo abaixo:
TestePular:
Então, adicione a instrução GoTo para pular a execução para o Rótulo de Linha chamado TestePular:
GoTo TestePular
Exemplos de Uso da Instrução GoTo
Este exemplo abaixo é utilizado para testar o ano. Se o ano for 2019 ou maior, o código irá pular para o Rótulo de Linha chamado Finalizar. Isto permite pular determinadas linhas de código se uma determinada condição for satisfeita.
Sub GoTo_Exemplo()
Dim intAno As Integer
intAno = 2019
If intAno >= 2019 Then GoTo Finalizar
'Processa dados para anos < 2019
MsgBox "O Ano é anterior a 2019"
Finalizar:
End Sub
Utilizando GoTo com Múltiplos Rótulos de Linha
Você também pode utilizar instruções GoTo para pular até outras linhas de código que sejam relevantes. Vamos ajustar o exemplo anterior para ir até uma localização diferente do código baseada no valor do Ano:
Sub GoTo_Utilizacao()
Dim intAno As Integer
intAno = 2019
If intAno = 2019 Then
GoTo Ano2019
ElseIf intAno = 2020 Then
GoTo Ano2020
Else
GoTo Ano2021
End If
Ano2019:
'Processa o ano 2019
MsgBox "O Ano é 2019"
GoTo Finalizar
Ano2020:
'Processa o ano 2020
MsgBox "O Ano é 2020"
GoTo Finalizar
Ano2021:
'Process 2021+
MsgBox "O Ano é 2021+"
Finalizar:
End Sub
Perceba que a instrução “GoTo Finalizar” antes de cada rótulo de linha. Nós adicionamos esta linha de código para essas secções de código fossem puladas a menos que fossem acessadas intencionalmente.
Tratamento de Erros com GoTo e Finalização do Procedimento
Agora vamos utilizar o Tratamento de Erros (Error Handling) para pular a execução para o final do procedimento, caso um erro aconteça.
Sub GoTo_OnError ()
Dim i As Integer
On Error GoTo Finalizar
i = 5 / 0
MsgBox i
Finalizar:
End Sub
Utilizando GoTo para Repetir a Execução de Código
Nosso último exemplo irá utilizar a instrução GoTo para repetir a execução de um código.
Abaixo nós iremos utilizar uma Caixa de Mensagem do tipo Sim / Não (Clique aqui para saber mais) para confirmar que o usuário tem ciência do alerta. Se ele clicar Não, a mensagem irá ser exibida novamente até que ele clique Sim (veja o GIF abaixo).
Sub GoTo_CaixaDeMensagemSimNao()
RepetirMensagem:
Dim resposta As Integer
resposta = MsgBox("Atenção: Este arquivo foi aberto como um arquivo " & _
"somente leitura, isso significa que qualquer alteração que você realize " & _
"não será salva, a menos que você tenha permissão para escrita." & _
vbNewLine & vbNewLine & _
"Selecione o menu Arquivo, Salvar como, para salvar uma cópia antes de " & _
"trabalhar nest arquivo." & vbNewLine & vbNewLine & _
"Você entendeu?", vbExclamation + vbYesNo, "ATENÇÃO!")
If resposta = vbNo Then GoTo RepetirMensagem 'Repete até o usuário clicar "Sim"
End Sub
Utilizando a Instrução GoTo Rótulo de Linha no Access VBA
Todos os exemplos acima funcionam perfeitamente do mesmo modo tanto no VBA do Access como no VBA do Excel.
Sub TesteGoTo()
On Error GoTo finalizar
DoCmd.OpenForm "FrmClientes"
Exit Sub
finalizar:
MsgBox "Não é possível abrir este formulário"
End Sub