VBA com erro, vá para 0

Excel VBA com erro, vá para 0

VBA On Error GoTo 0 é uma instrução do manipulador de erros usada para desativar o manipulador de erros habilitado no procedimento. É conhecido como “Desabilitador do Manipulador de Erros”.

O tratamento de erros em qualquer uma das linguagens de programação é uma classe mestre que todos os programadores precisam entender. A linguagem de programação VBA também, e também temos técnicas de tratamento de erros nesta linguagem de programação. “On Error Resume Next” habilita o tratamento de erros e “On Error GoTo 0” desabilita o tratamento de erros habilitado.

Tanto “On Error Resume Next” e “On Error GoTo 0” são pares que precisam ser usados ​​em conjunto para a eficiência do código. Para lidar com o erro, precisamos começar com a declaração “On Error Resume Next” e para encerrar esse manipulador de erros, precisamos usar a declaração “On Error GoTo 0”.

Qualquer código de linha escrito entre essas instruções irá ignorar qualquer tipo de erro ocorrido no processo.

Como usar a instrução On Error GoTo 0?

Você pode baixar este modelo VBA em erro, vá para 0 Excel aqui - VBA em erro, vá para 0 modelo em Excel

Para obter um exemplo, veja o código abaixo.

Código:

 Sub On_ErrorExample1 () Worksheets ("Sheet1"). Selecione Range ("A1"). Value = 100 Worksheets ("Sheet2"). Select Range ("A1"). Value = 100 End Sub 

O que o código acima faz é primeiro selecionar a planilha chamada “Plan1” e na célula A1 ele irá inserir o valor 100.

Código:

Planilhas ("Folha1"). Selecione o intervalo ("A1"). Valor = 100

Em seguida, ele irá selecionar a planilha chamada “Planilha2” e inserir o mesmo valor.

Código:

Planilhas ("Folha2"). Selecione o intervalo ("A1"). Valor = 100

Agora tenho as folhas abaixo em minha pasta de trabalho.

Não existem planilhas chamadas “Planilha1” e “Planilha2”, quando executarmos o código, ele encontrará um erro como o abaixo.

Uma vez que não existe uma folha com o nome “Folha1”, encontrou o erro “Subscrito fora do intervalo”. Para lidar com esse erro, adicionarei uma instrução do manipulador de erros “On Error Resume Next” na parte superior da macro.

Código:

 Sub On_ErrorExample1 () On Error Resume Next Worksheets ("Sheet1"). Selecione Range ("A1"). Value = 100 Worksheets ("Sheet2"). Select Range ("A1"). Value = 100 End Sub 

Agora execute o código e veja o que acontece.

Ele não fornecerá nenhuma mensagem de erro porque a instrução do manipulador de erros On Error Resume Next está habilitada.

Imagine o cenário onde precisamos ignorar o erro em caso de indisponibilidade da planilha “Planilha1” mas precisamos avisar se não existe planilha denominada “Planilha2”.

Uma vez que adicionamos On Error Resume Next no topo, ele começou a tratar o erro, mas ao mesmo tempo, precisamos especificar quantas linhas precisamos ignorar esse erro.

Neste exemplo, só precisamos ignorar o erro para a primeira planilha, mas para a segunda planilha em diante, precisamos que o erro ocorra se não houver planilha “Planilha2”. Portanto, após o primeiro código de planilha, adiciona-se a linha de desabilitação de erro On Error GoTo 0.

Código:

 Sub On_ErrorExample1 () On Error Resume Next Worksheets ("Sheet1"). Selecione Range ("A1"). Value = 100 On Error GoTo 0 Worksheets ("Sheet2"). Selecione Range ("A1"). Value = 100 End Sub 

Agora execute o código linha por linha para ver o impacto pressionando a tecla F8.

Agora, se você pressionar a tecla F8 uma vez, a execução do código irá pular para a próxima linha e a tarefa da linha ativa será executada. Agora a linha ativa (linha amarela) é o manipulador de erros “On Error Resume Next” e o manipulador de erros será habilitado.

Agora que qualquer erro ocorre, ele será ignorado até que execute o manipulador de erro e desabilite a instrução “ On Error GoTo 0 ”.

Na tentativa anterior, encontramos erros, mas pressione a tecla F8 mais uma vez e veja a mágica.

Sem dar nenhum tipo de erro, ele retomou a execução do código, embora não haja planilha “Planilha2” para selecionar. Agora pressione F8 novamente.

Como não havia Folha1, ele não pode inserir o valor na célula A1 como 500, mas o que ele faz é inserir o valor 500 na célula A1, seja qual for a planilha ativa. Minha planilha ativa quando estou executando o código era “Planilha3”, então o valor 100 é inserido na célula A1.

Agora a linha de código ativa é “ On Error GoTo 0 ”, pressionando a tecla F8 esta tarefa de linha será executada.

Uma vez que “On Error GoTo 0” é executado, ele interrompe o processo de tratamento de erros e novamente começa a mostrar os erros, se ocorrerem. Pressione a tecla F8 e veja o erro.

No caso anterior, sem On Error GoTo 0, ele também ignorou esse erro, mas como adicionamos o desabilitador do manipulador de erros, ele começou a mostrar o erro novamente.

Coisas para lembrar aqui

  • Ambos On Error Resume Next e On Error GoTo 0 precisam ser usados ​​como “ Error Handler Enabler ” e “ Error Handler Disabler ”.
  • Qualquer linha de código entre essas duas instruções encontra um erro e será ignorada.
  • Se houver uma instrução On Error GoTo 0, após a saída do manipulador de erros do subprocedimento será desativado.