Tratamento de erros do VBA do Excel

A manipulação de erros é um mecanismo muito útil e significativo para linguagens de programação como o VBA. O controle ou prevenção de erros é um aspecto do tratamento de erros, que significa tomar medidas eficazes e significativas dentro de um script VBA para evitar a ocorrência de mensagens pop-up de erros.

Diferentes tipos de erros no VBA

  1. Erro de sintaxe ou erro de análise
  2. Erro de compilação ou compilação
  3. Erro de tempo de execução
  4. Erro lógico

Os erros acima podem ser corrigidos com a ajuda de depuração abaixo mencionada e diferentes instruções 'On Error' inseridas entre um código.

Em erro, retomar em seguida

On Error Goto 0

On Error Goto

No erro, vá para -1

Tratamento de erros do VBA com a ajuda de diferentes instruções 'ON ERROR'

Você pode baixar este modelo de Excel para manipulação de erros do VBA aqui - Modelo de Excel para manipulação de erros do VBA

Exemplo # 1 - Erros de compilação do VBA

Quando houver um erro em uma instrução ou sintaxe do código VBA, quando você digitar um código incorretamente por engano, ele será destacado em vermelho, dependendo das opções de configuração nas ferramentas (se você selecionou Verificação automática de sintaxe).

Uma caixa de mensagem pop-up com erro de compilação será exibida quando você executar o código com sintaxe incorreta.

Código:

 Sub SYNTAX_ERROR () MsgBox este é o meu primeiro programa End Sub 

"ERRO DE COMPILAÇÃO: VARIÁVEL NÃO DEFINIDO" é o erro mais comum que aparece como uma mensagem pop-up. quando a variável de referência não está definida, esse erro ocorre.

Código:

 Sub VBA_FORMAT1 () A = 19049.83 A = Formato (A, "PADRÃO") MsgBox A End Sub 

No exemplo acima, eu não declarei o tipo de variável como String, portanto, esse erro ocorre. Portanto, preciso declarar uma variável como Dim A As String.

Código:

 Sub VBA_FORMAT1 () Dim A como String A = 19049.83 A = Formato (A, "STANDARD") MsgBox A End Sub 

Exemplo # 2 - Erro de tempo de execução do VBA

Quando uma instrução ou termos matemáticos impossíveis estão presentes em uma instrução, ocorre esse erro de tempo de execução.

Código:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Exemplo # 3 - Erros ou erros lógicos do VBA

Esses erros são muito difíceis de rastrear, nem serão destacados nem a mensagem de erro pop-up será exibida. isso resultará em ações inesperadas e resultados incorretos.

Exemplo: Quando duas variáveis ​​estão presentes no código, ele pode conter uma incorreta. Nesse caso, ocorre um erro lógico.

Como evitar erros no VBA?

Vamos verificar Como impedir os diferentes tipos de erros acima no VBA Excel.

Etapa 1: Para abrir uma janela do VB Editor Selecione ou clique em Visual Basic no grupo Code na guia Developer ou clique diretamente na tecla de atalho Alt + F11 .

Etapa 2: Para criar um módulo em branco, nos objetos do Microsoft Excel, clique com o botão direito do mouse na planilha 1 (VB_ERROR HANDLING) e em Inserir módulo para criar um novo módulo em branco.

Tratamento de erros do VBA com opção de depuração

É melhor compilar o código antes de executá-lo. Para seguir a compilação, as etapas abaixo precisam ser seguidas. Na barra de ferramentas do menu VB, na opção Debug, precisamos selecionar um projeto VBA compilado. Quando você clica nele, ele verifica o código passo a passo, uma vez que encontra o erro, o realça e a mensagem pop-up é exibida, assim você precisa corrigi-lo. Depois de corrigido, você precisa compilar para encontrar o próximo erro no código.

Nota: Com a ajuda da opção de compilação, podemos corrigir apenas o erro de compilação e sintaxe.

Tratamento de erros do VBA com a ajuda de diferentes instruções 'ON ERROR'

1. Em erro, retomar em seguida

Aqui, o erro será ignorado e o código seguirá em frente.

No exemplo abaixo mencionado, 6 não pode ser dividido por zero, se você executá-lo sem inserir a instrução On Error Resume Next, ocorre um erro de tempo de execução abaixo mencionado.

Código:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Se On Error Resume Next for inserido na parte superior do código após a instrução Sub, ele ignora o erro de tempo de execução e passa para a próxima instrução, que resulta na saída de 6/2, isto é, 3 (caixa de mensagem pop-up com o resultado).

Código:

 Sub RUNTIME_2 () No erro Continuar Avançar MsgBox 6/0 MsgBox 6/2 End Sub 

2. No erro GoTo 0 e Error GoTo -1

'On Error GoTo 0' interromperá o código na linha específica que causa o erro e mostra uma caixa de mensagem que descreve ou indica o erro.

Código:

 Sub onError_Go_to_0 () No erro GoTo 0 Mate o intervalo "C: TempFile.exe" ("A1"). Valor = 100 / "PETER" End Sub 

Geralmente, ele mostra o comportamento padrão da verificação de erros, é significativo quando usado junto com o 'On Error Resume Next'.

Geralmente, você pode observar a caixa Mensagem de erro em tempo de execução, contém as opções 'Continuar', 'Finalizar', 'Depurar' e 'Ajuda' . vamos verificar os usos de cada um deles.

  • A opção Continuar ignorará a exceção e continuará o código, se possível.
  • A opção final finaliza o programa.
  • A opção Debug destacará a instrução em que o erro ocorreu. o que ajuda você a depurar ou corrigir o código.
  • A opção Ajuda levará você a abrir a página de ajuda do Microsoft MSDN.

On Error GoTo 0 com On Error Resume Next

Código:

 Sub onError_Go_to_0_with_Resume_next () No erro Continuar Avançar Mate "C: TempFile.exe" No erro Ir para o intervalo 0 ("A1"). Valor = 100 / "PETER" End Sub 

No código acima, ele ignorará os erros até atingir a instrução On Error GoTo 0. Após a instrução On Error GoTo 0, o código retorna ou prossegue para a verificação normal de erros e dispara o erro esperado adiante. quando executo o código acima, ele mostra o erro de divisão, ou seja, digite incompatibilidade (o valor numérico não pode ser dividido pelo texto).

No erro, o GoTo 0 desabilita qualquer interceptação de erro atualmente presente no código VBA, ou seja, desativa o tratamento de erros no código principal, enquanto o On Error GoTo -1 limpa o tratamento de erros e o define como nada, o que ajuda ou permite criar outra interceptação de erro.

3. Em Erro, GoTo <LABEL

VBA para transferir o controle do programa para a linha seguida pelo rótulo, se algum erro de tempo de execução for encontrado, ou seja, o código salta para o rótulo especificado. Aqui, as instruções de código entre a linha de exceção e o rótulo não serão executadas.

Este método é mais adequado e significativo para sair do programa normalmente, se ocorrer algum erro fatal grave durante a execução.

No código VBA abaixo mencionado, assim que o erro ocorre na linha 3, o programa transfere o controle para o rótulo da Linha 6 (ou seja, a mensagem pop-up aparece como "Manipulador de exceção" ).

Código:

 Sub OnError_Go_to_Label () No erro GoTo Error_handler: MsgBox 9/0 MsgBox "Esta linha não será executada" Exit Sub Error_handler: MsgBox "manipulador de exceção" End Sub 

Aqui você pode observar que 'Exit Sub' deve ser usado imediatamente antes do rótulo 'Error_handler:', isso é feito para garantir que o bloco de código do manipulador de erros pare ou não seja executado se não houver erro. Agora, você pode salvar sua pasta de trabalho como uma "pasta de trabalho habilitada para macro do Excel". Clique em salvar como no canto esquerdo da planilha.

Mais uma vez, se você abrir um arquivo, poderá clicar na tecla de atalho, ou seja, Fn + Alt + f8, a caixa de diálogo "Macro" será exibida, onde você poderá executar um código de macro salvo de sua escolha ou clicar em Fn + Alt + F11 para uma janela macro completa.

Coisas para lembrar

  • Antes de escrever o código, você deve garantir que a quebra de erros não tratados seja marcada ou selecionada com erro. opção de trapping em geral nas opções da ferramenta da barra de ferramentas VBA.
  • É uma configuração padrão que ajuda a interromper seu código por erros que não são tratados.
  • Interromper todos os erros: interromperá seu código em todos os tipos de erros.
  • Módulo de classe de invasão: caso um objeto como o formulário do usuário seja usado no código, ele destacará a linha exata que está causando o erro.

Artigos recomendados

Este é um guia para manipulação de erros do VBA. Aqui discutimos como usar o tratamento de erros do VBA no Excel, juntamente com alguns exemplos práticos e o modelo do Excel para download. Você também pode consultar nossos outros artigos sugeridos -

  1. Matriz de declaração do VBA (exemplos)
  2. VBA em erro
  3. Folha de desprotegida do VBA
  4. Colunas VBA | Modelos do Excel
  5. Ambiente VBA

Categoria: