VBA – Em Caso de Erro, Sair da Sub
No VBA, você pode programar seu código para sair de uma Sub sempre que um erro for encontrado. Para fazer isso, use On Error GoTo e Exit Sub.
On Error Goto diz ao VBA que, quando um erro for encontrado, ele deve “ir para” uma seção específica do seu código. Ex:
On Error GoTo GerenciadorDeErros
Dentro dessa seção, você pode dizer ao VBA para para sair do subprocedimento:
GerenciadorDeErros:
Exit Sub
Continue lendo para ver essas linhas de código em ação…
Sair de um Subprocedimento em Caso de Erro no VBA
Neste exemplo, geraremos um erro ao dividir por zero:
i = 5 / 0
Veja o código completo abaixo. Quando o VBA ler o erro, ele “irá” para a seção GerenciadorDeErros do código e sairá:
Sub TesteErro ()
Dim i As Integer
On Error GoTo GerenciadorDeErros
i = 5 / 0
'Fazer algo com i
MsgBox i
Exit Sub
GerenciadorDeErros:
MsgBox "Em caso de erro, sair da Sub"
Exit Sub
End Sub
Para especificar o tratamento de erros, primeiro você precisa declarar a instrução On Error GoTo. Ela deve ser declarada no início de uma Sub:
On Error GoTo GerenciadorDeErros
Depois disso, você precisa declarar o código de tratamento de erros. Geralmente, ele fica no final do código:
GerenciadorDeErros:
MsgBox "Em caso de erro, sair da Sub"
Exit Sub
Adicionamos o “Exit Sub” acima do GerenciadorDeErros porque só queremos executar o código GerenciadorDeErros se houver um erro.
Exit Sub
GerenciadorDeErros:
MsgBox "Em caso de erro, sair da Sub"
Exit Sub
End Sub
Se você executar a Sub, ela apresentará um erro devido à divisão por zero. Nesse momento, o código de tratamento de erros será executado. A caixa de mensagem é exibida e a Sub é encerrada.
Se você quiser saber como encerrar a execução de código no VBA, clique neste link: Finalização do VBA
Se você quiser saber como sair de uma subfunção ou função, clique neste link: VBA Exit Sub or Function (Sair de sub ou função)