VBA em erro GoTo

Excel VBA em erro GoTo

Os erros são parte integrante de qualquer linguagem de codificação e as macros VBA não são diferentes disso. Em minha opinião, descobrir por que o erro ocorre é 90% do trabalho feito e 10% está em como consertar esse erro. Em todas as linguagens de codificação, os codificadores usam sua própria maneira de lidar com os erros em sua codificação, assim também nós usamos na codificação VBA. Muitas vezes, precisamos ignorar o erro ou, muitas vezes, podemos querer ir para coisas específicas quando o erro ocorre. “On Error” é a instrução que precisamos usar no VBA para lidar com erros.

Esta afirmação tem três tipos de afirmações e abaixo está a lista.

  1. No erro, vá para 0
  2. No erro, vá para [rótulo]
  3. On Error Resume Next

Neste artigo, veremos como essas três instruções são usadas na codificação VBA para lidar com qualquer tipo de erro.

Como usar o VBA On Error Statements?

Você pode baixar este modelo de declaração GoTo VBA em erro aqui - Modelo de declaração GoTo VBA em erro

# 1 - Em caso de erro, continuar próximo

Como a própria declaração diz “On Error Resume Next” significa sempre que o erro ocorre no código “resume” a próxima linha do código, ignorando o código da linha de erro. Agora dê uma olhada no código abaixo.

No código a seguir, mencionei os nomes da planilha e pedi para inserir o valor na primeira célula como “Teste de erro”.

Código:

 Sub On_Error_Resume_Next () Worksheets ("Ws 1"). Selecione Range ("A1"). Value = "Error Testing" Worksheets ("Ws 2"). Selecione Range ("A1"). Value = "Error Testing" Worksheets ( "Ws 3"). Selecione o intervalo ("A1"). Valor = "Teste de erro" Planilhas ("Ws 4"). Selecione o intervalo ("A1"). Valor = "Teste de erro" End Sub 

Agora eu tenho as planilhas abaixo em minha pasta de trabalho.

  • Vou rodar o código e ver o que acontece.

  • Recebemos o erro “Subscript Out of Range”, clique em “Debug” para ver em qual linha encontramos o erro.

  • Portanto, na linha “Planilhas (“ Ws 3 ”). Selecione” obtivemos um erro, isso ocorre porque em nossa pasta de trabalho não há planilha com o nome “Ws 3”, então encontramos um erro.

Em tais casos, podemos querer ignorar o erro e retomar a execução do código para a próxima linha, é aqui que nosso manipulador de erros “On Error Resume Next” entra em cena.

  • Tudo o que precisamos fazer é adicionar a linha “On Error Resume Next” no início da macro.

Agora execute este código e ele não mostrará nenhuma mensagem de erro porque sempre que o código encontrar um erro, ele o ignorará e continuará para a próxima linha de código.

# 2 - Em caso de erro, GoTo 0

Este não é um manipulador de erros, e sim um ativador de mensagens de erro depois que desabilitamos a mensagem de erro usando a instrução “On Error Resume Next”.

Quando você usa a instrução “Resume Next”, as macros VBA começam a ignorar qualquer tipo de erro que ocorre e continua com a próxima linha de códigos. Mas não queremos que isso aconteça o tempo todo porque alguns erros precisamos ignorar intencionalmente, outros precisamos de uma notificação.

Se qualquer conjunto específico de código gerar um erro naquele bloco de código, apenas precisamos ignorar o erro de outras partes do código, não queremos ignorar o erro.

  • Veja na imagem abaixo o uso da declaração “On Error GoTo 0”.

Portanto, agora os erros serão ignorados até que o código encontre o ativador de notificação de erro “On Error GoTo 0”. Uma vez que esta linha de código executa macros de volta ao normal e começa a lançar mensagens de erro como de costume.

# 3 - Em erro GoTo Label

Vimos como ignorar o erro e como habilitar de volta a notificação de erro. Agora, usando este método, podemos ir para uma linha específica de código.

Neste método, “Rótulo” significa que podemos dar qualquer nome a esse rótulo e o mesmo rótulo deve ser fornecido na linha de código necessária.

Por exemplo, observe o mesmo código do exemplo acima.

Agora vamos executar o código linha por linha pressionando a tecla de função F8.

Agora a macro lerá a instrução do manipulador de erros, pressione a tecla F8 para executar os 2 primeiros códigos da planilha.

Agora a macro está prestes a executar o terceiro código da planilha que não está na pasta de trabalho, pressione a tecla F8 e veja o que acontece.

Como a macro encontrou um erro na linha de código abaixo, ela saltou para o rótulo do manipulador de erros “ErrorMessage”, que foi descrito por meio da instrução “On Error GoTo [Label]”.

Agora a caixa de mensagem mostrará a mensagem “Erro ocorrido e saída da macro”.

Coisas para lembrar

  • O VBA On Error GoTo 0 ativará a notificação de erro mais uma vez, portanto, não se esqueça de adicioná-la após fornecer um manipulador de erro.
  • Você precisa ter certeza absoluta de em qual parte do código deseja ignorar o erro, portanto, inclua o manipulador de erros apenas para esse bloco de código.