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 ExcelPara 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.