VBA – GoTo: Ir para um Rótulo de Linha

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on August 15, 2023

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

goto rotulo linha

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

 

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA