VBA On Error GoTo - Tipos de declarações de erro em VBA

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. Na 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 programadores usam sua própria maneira de lidar com 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 a 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, a seguir, 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?

# 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 das planilhas 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.
  • Obtivemos o erro “Subscript Out of Range”, clique em “Debug” para ver em qual linha encontramos o erro.
  • Portanto, na linha “Planilhas (“ Ws 3 ”) .Select,” encontramos um erro. Isso ocorre porque, em nossa pasta de trabalho, não existe uma planilha chamada “Ws 3”, então foi encontrado um erro.

Nesses casos, podemos 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 habilitador 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 ocorra 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 nesse bloco de código, apenas precisamos ignorar os erros em outras partes do código. Não queremos ignorar o erro.

  • Observe a imagem abaixo para 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 execute macros de volta ao normal e comece a enviar mensagens de erro normalmente.

# 3 - Em erro GoTo Label

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

Nesse método, “Rótulo” significa que podemos dar qualquer nome a esse rótulo, e o mesmo rótulo também 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

  • 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 qual parte do código deseja ignorar o erro, portanto, inclua o manipulador de erros apenas para esse bloco de código.

Artigos interessantes...