Interceptando erros VBA
Para interceptar um erro no Visual Basic você usa a instrução On Error.
Quando uma instrução On Error está em vigor e ocorrer um erro o VB vai executar as ações determinadas pela instrução.
Para estar em vigor a instrução On Error deve ser executada antes da ocorrência de um erro na mesma função ou sub-rotina onde ocorreu o erro ou em uma função ou sub-rotina que tenha chamado a função ou sub-rotina onde o erro tiver ocorrido.
A instrução On Error tem a seguinte sintaxe:
On Error goto label
Traduzindo-a teremos:
Quando ocorrer um erro , transfira a execução para a linha após a etiqueta.
A etiqueta é um identificador alfanumérico que termina com dois pontos (:).
(Ex: Trataerro: )
Ela tem que começar na primeira coluna e tem que estar na mesma função ou sub-rotina da instrução On Error, sendo exclusiva dentro de um módulo.
Após a etiqueta você fornece o código que vai tratar o erro ocorrido.
Vejamos um exemplo:
Public Sub Exemplo()
On error Goto Trata_Erro -> Inicia tratamento de erro
Print 1/0 -> Ocorreu um erro, a execução é desviada para a o código que vem após a etiqueta Exit sub Trata_Erro Trata_Erro: msgbox "Não existe divisão por zero !!!!" ------> Exibe a mensagem e encerra a aplicação.
End Sub
Obs:Note que antes da etiqueta existe a instrução Exit Sub. Sem ela o codigo após a etiqueta seria sempre executado , mesmo não havendo ocorrência de erros.
Conteúdo
Identificando o tipo de erro..
Cada erro gerado no Visual Basic esta associado a um número e tem uma descrição.
Para identificar um erro ocorrido , informando o seu número , a mensagem de erro, de onde o erro procede, etc. usamos o Objeto Err.
O objeto Err