VBA em caso de erro, vá para 0 - Como usar On Error GoTo 0 no Excel VBA?

Excel VBA com erro, vá para 0

VBA On Error GoTo 0 é uma instrução do manipulador de erros usada para desabilitar 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” ativa o manipulador de erros e “On Error GoTo 0” desabilita o manipulador de erros ativado.

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 terminar este 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?

Por exemplo, observe 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 é selecionar primeiro a planilha chamada “Planilha1” e, na célula A1, inserir o valor 100.

Código:

Planilhas ("Folha1"). Selecione Intervalo ("A1"). Valor = 100

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

Código:

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

Agora tenho as planilhas abaixo em minha pasta de trabalho.

Não existem folhas chamadas “Folha1” e “Folha2”. Quando executamos o código, ele encontrará um erro como o abaixo.

Como não há nenhuma planilha chamada “Plan1”, ele encontrou um 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 em que precisamos ignorar o erro em caso de indisponibilidade da planilha “Planilha1”, mas precisamos avisar se não existe planilha denominada “Planilha2”.

Como adicionamos On Error Resume Next na parte superior, ele começou a tratar o erro, mas, ao mesmo tempo, precisamos especificar quantas linhas precisamos para 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 pula para a próxima linha e a tarefa de 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 qualquer erro ocorre. Ele será ignorado até que execute o manipulador de erros e desabilite o código “ 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 mesmo que 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 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 ignorou esse erro também, mas como adicionamos um desabilitador do manipulador de erros, ele começou a mostrar o erro novamente.

Coisas para lembrar aqui

  • Tanto On Error Resume Next quanto 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 subprocedimento, o manipulador de erros será desabilitado.

Artigos interessantes...