VBA em erro

O VBA On Error é um método fácil para lidar com exceções inesperadas nas macros do Excel. Sabe-se que não podemos escrever código sem nenhum erro. Às vezes, escrever código grande pode nos dar o erro mesmo no momento da compilação. Para evitar esse tipo de situação, adicionamos Mensagem de Erro que, em vez de nos dar a resposta certa ou o código de erro, ela nos mostrará a mensagem com o código de erro. Parece que obtivemos a saída do nosso cálculo, mas é o código de erro que será impresso.

Como usar o VBA do Excel na declaração de erro no Excel?

Existem 3 maneiras de erro no VBA. Vamos entender maneiras diferentes com alguns exemplos.

Exemplo 1

O primeiro tipo de erro é o erro de compilação de código, que ocorre quando um código é variáveis ​​não declaradas ou impossíveis. Para entender mais, usaremos uma expressão matemática simples da divisão. Para isso, vá ao menu Inserir do VBA e selecione Módulo como mostrado abaixo.

Agora abra a subcategoria e adicione qualquer nome. Como estamos usando o On Error, nomeamos o mesmo.

 Sub OnError () End Sub 

Agora defina 2 ou 3 números inteiros. Aqui nós temos X e Y como números inteiros.

 Sub OnError () Dim X Como Inteiro, Y Como Inteiro, Z Como Inteiro Final Sub 

Agora, como discutido acima, calcularemos a expressão matemática da divisão. Para X, colocaremos um caractere no numerador e o dividiremos 0. E Y será 20/2, que é um número completo.

 Sub OnError () Dim X Como Inteiro, Y Como Inteiro X = Teste / 0 Y = 20/2 End Sub 

Agora execute o código usando a tecla F5 ou clicando no botão play, como mostrado abaixo. Obteremos o erro em tempo de execução 6, que mostra o texto sobre o erro numérico.

Agora, para anular esse erro, adicionaremos uma linha Em erro retomar a seguir antes de escrever o código matemático. Irá pular o código de erro, mas não conseguiremos ver o resultado do segundo código matemático. Isso apenas oculta a mensagem de erro se várias linhas de códigos, como mostrado abaixo. Agora tente executar o código também.

 Sub OnError () Dim X Como Inteiro, Y Como Inteiro No Erro Continuar Avançar X = Teste / 0 Y = 20/2 MsgBox X MsgBox Y End Sub 

Agora, para anular esse erro, adicionaremos uma linha Em erro retomar a seguir antes de escrever o código matemático. Irá pular o código de erro, mas não conseguiremos ver o resultado do segundo código matemático. Isso apenas oculta a mensagem de erro se várias linhas de códigos, como mostrado abaixo. Agora tente executar o código também.

Exemplo 2

Neste exemplo, consideraremos a divisão matemática que fornece resultado infinito, mas na codificação, resultará em # DIV / 0. Para demonstrar isso, consideraremos mais um número inteiro Z junto com X e Y na subcategoria, como mostrado abaixo.

 Sub OnError () Dim X Como Inteiro, Y Como Inteiro, Z Como Inteiro Final Sub 

Agora, enquadre todos os números inteiros X, Y e Z com uma expressão matemática de divisão e, para imprimi-lo, use a função MsgBox no VBA do resultado de cada número inteiro.

Abaixo, para o inteiro X, dividimos 10 por 0, 20 por 2 e 30 por 4.

 Sub OnError () Dim X Como Inteiro, Y Como Inteiro, Z Como Inteiro X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox X MsgBox Z End Sub 

Agora execute o código usando a tecla F5 ou manualmente, como mostrado abaixo.

Como podemos ver na captura de tela acima, Erro de tempo de execução 11, o que significa que o erro está relacionado ao número. Agora, para superar isso, adicione uma linha On Error Resume Next antes da expressão matemática, como mostrado abaixo.

 Sub OnError () Dim X Como Inteiro, Y Como Inteiro, Z Como Inteiro No Erro Continuar Próximo X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox X MsgBox Y MsgBox Z End Sub 

Agora, se executarmos o código, obteremos zero para o primeiro número inteiro X e, para Y e Z, obteremos as respectivas respostas de divisão, como mostrado abaixo.

Exemplo 3

O segundo tipo de erro é visto quando inserimos entrada de dados incorreta no código. Para isso, consideraremos 3 números inteiros X, Y e Z abrindo a Subcategoria no VBA, como mostrado abaixo.

 Sub OnError () Dim X Como Inteiro, Y Como Inteiro, Z Como Inteiro Final Sub 

Agora considere também a mesma divisão matemática que vimos no exemplo acima.

 Sub OnError () Dim X Como Inteiro, Y Como Inteiro, Z Como Inteiro X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox X MsgBox Z End Sub 

Se executarmos o código, receberemos a mesma mensagem de erro do erro de tempo de execução 11.

Agora, para anular esse erro, use o texto No erro GoTo com a palavra ““ Resultado para pular a mensagem de erro e obter a saída que funciona bem, como mostrado abaixo.

 Sub OnError () Dim X Como Inteiro, Y Como Inteiro, Z Como Inteiro No Erro GoTo ZResult: X = 10/0 Y = 20/2 ZResult: Z = 30/4 MsgBox X MsgBox X MsgBox Y MsgBox Z End Sub 

Agora execute o código novamente. Obteremos o mesmo resultado que o exemplo anterior.

Em erro, GoTo ZResult nos ajuda a pular diretamente o número inteiro do ponto de resultado mencionado, como fizemos no número inteiro Z.

Exemplo 4

No terceiro tipo de erro, quando executamos o código e o VBA não é capaz de entender a linha de código. Isso pode ser feito com a ajuda do código On Error Resume Next, junto com MsgBox Err.Number . Considere os mesmos dados usados ​​nos exemplos acima. Veremos novamente os mesmos três números inteiros X, Y e Z, como mostrado abaixo.

 Sub OnError () Dim X Como Inteiro, Y Como Inteiro, Z Como Inteiro Final Sub 

E para imprimir a saída do resultado, permita caixas de mensagem para todos os números inteiros como saída.

 Sub OnError () Dim X Como Inteiro, Y Como Inteiro, Z Como Inteiro X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox X MsgBox Z End Sub 

Agora, se executarmos o código completo, obteremos uma mensagem de erro de erro matemático Erro de tempo de execução 11.

Agora, para anular este erro, usaremos On Error Resume Next.

 Sub OnError () Dim X Como Inteiro, Y Como Inteiro, Z Como Inteiro No Erro Continuar Próximo X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox X MsgBox Y MsgBox Z End Sub 

E execute o código. Isso dará resultado em uma linha matemática válida, como mostrado abaixo.

Agora adicione ainda mais a linha de código ZResult antes da expressão matemática da divisão inteira Z e adicione a linha de código MsgBox Err.Number no final do código, como mostrado abaixo.

 Sub OnError () Dim X Como Inteiro, Y Como Inteiro, Z Como Inteiro No Erro Continuar Próximo X = 10/0 Y = 20/2 ZResult: Z = 30/4 MsgBox X MsgBox X MsgBox Y MsgBox Y MsgBox Z MsgBox Err.Number End Sub 

Agora execute o código usando a tecla F5 ou pressionando o botão play, como mostrado abaixo.

Como podemos ver nas imagens acima. A primeira caixa de mensagem possui 0, que substitui a expressão matemática incorreta. 2 e 3 têm um resultado de divisão de números Y e Z. E a última caixa de mensagem possui o código de erro de tempo de execução 11, que provavelmente é o código de erro das expressões de divisão de X inteiros.

Prós do VBA On Error

  • Podemos calcular qualquer fórmula matemática, mesmo que esteja incorreta.
  • Para estruturas de codificação maiores, onde há chances ou erros, o uso desses métodos pode fornecer resultados corretos, mesmo entre a linha de códigos.
  • Isso fornece um melhor resultado em comparação com o resultado obtido dos cálculos normais do Excel.

Coisas para lembrar

  • Sempre salve o arquivo no arquivo do Excel habilitado para macro para que possamos usar o código VBA criado várias e várias vezes.
  • Sempre compile o código escrito antes de implementar com qualquer requisito do Excel.
  • Se necessário, atribua o código escrito a qualquer botão para que possamos clicar rapidamente no botão e executar o código.

Você pode fazer o download deste modelo VBA On Error Excel aqui - Modelo VBA On Error Excel

Artigos recomendados

Este foi um guia para o Excel VBA On Error. Aqui discutimos como usar o VBA On Error Statement, juntamente com alguns exemplos práticos e modelo de excel para download. Você também pode consultar nossos outros artigos sugeridos -

  1. Como usar a função VBA TRIM?
  2. Formato numérico no VBA
  3. Guia do Excel VBA Do While Loop
  4. Como usar a função de localização do VBA?

Categoria: