Tratamento de erros VBA

Tratamento de erros do Excel VBA

No VBA, quando trabalhamos com códigos, podemos encontrar muitos tipos diferentes de erros e como solucionar esses erros é conhecido como Tratamento de erros, agora pode haver alguns erros que são cometidos na sintaxe que o próprio Excel destaca, mas quando há algum erro que está fora da faixa ou algo que não existe o excel nos dá um pop up para o mesmo, é importante saber qual código de erro é para qual erro a fim de identificar o erro no código.

No Excel VBA, ao executar qualquer conjunto de códigos, obtemos alguns tipos de erros. Alguns desses erros são erros de sintaxe, outros são erros não executáveis. O erro de sintaxe é quando feito pelo usuário é destacado em vermelho pelo próprio excel. Mas quando há qualquer outro tipo de erro de tempo de execução, como o tratamos e como vamos além disso, é o que abordaremos neste artigo.

Além dos erros de sintaxe, os outros erros de tempo de execução precisam ser tratados durante a execução de qualquer conjunto de códigos. Primeiro, deixe-me dar um exemplo de como ocorre o outro erro de tempo de execução. Dê uma olhada no código abaixo,

Este é um código de amostra, quando executado, retornará o que está escrito na função msgbox. Mas, como podemos ver, na segunda linha do código há 4/0, o que não é possível em termos matemáticos, por isso retornará um erro em tempo de execução. Vamos executar o código acima e ver o erro que obteremos.

Este é o erro que obtemos ao executar o código fornecido. Agora, como lidar com esse erro é feito pelo Tratamento de Erros.

Existem dois métodos para lidar com os erros:

  1. No erro, vá para, e
  2. On Error Resume Next.

Explicação

Conforme explicado acima, obtemos muitos tipos de erros no VBA, alguns são de sintaxe e outros são de tempo de execução. Os erros de sintaxe já estão destacados na cor vermelha, por exemplo, consulte a captura de tela abaixo,

Enquanto o outro é erros de tempo de execução. Basicamente, o Excel fará as três coisas a seguir, ou mostrará um erro ou ignorará esse erro ou mostrará um determinado conjunto de instruções. Para realizar tais tarefas, precisamos fornecer instruções e isso é chamado de Tratamento de Erros.

Como lidar com erros no código VBA?

Você pode baixar este modelo do Excel para tratamento de erros VBA aqui - Modelo Excel para tratamento de erros VBA

Exemplo 1

Para o primeiro exemplo, tomemos o primeiro código que tomamos como demonstração. No exemplo acima, vimos que o código apresenta erro de tempo de execução na segunda função msgbox.

Escreva o seguinte código após abrir a subfunção,

Código:

 Sub Sample () On Error Resume Next MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub 

Agora, quando executamos o código acima, vemos que a linha de código que contém o erro não foi executada. O Excel pula essa linha e continua na próxima linha.

Existe outro método para tratar o erro é a instrução vba Goto, fornecemos ao excel um destino para onde ir quando encontrar um erro. Em vez do código de tratamento de erros anterior, inserimos, anote o seguinte código,

Código:

 Sub Sample () On Error GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub 

Estamos dando ao excel Az um destino para onde ir se encontrar um erro. Agora, após o msgbox, escreva outro código como abaixo,

Código:

 Sub Sample () On Error GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Done: Exit Sub 

Agora precisamos definir o destino az como o que ele deve fazer quando o Excel encontra um erro no código.

Código:

 Sub Sample () On Error GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Feito: Exit Sub az: MsgBox "Isto é um erro" & Err.Description End Sub 

Agora, quando executamos este código, vemos o resultado exibido.

Este é o primeiro resultado da caixa de mensagem e como sabemos que temos um erro na próxima linha do nosso código, vamos ver o resultado que o Excel dará.

O err.description acima no código nos ajuda a mostrar exatamente o que o erro ocorreu em nosso código.

Exemplo # 2

Aprendemos como lidar com erros em nossos códigos. Vejamos outro exemplo de como lidar com erros. Considere o código a seguir como nosso segundo exemplo.

Temos um erro um tanto semelhante no exemplo 1. O erro está na linha d = i / b. Agora lidaremos com esses erros usando os dois métodos explicados acima.

Escreva o seguinte código após abrir a subfunção,

Código:

 Sub Sample2 () On Error Resume Next bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d End Sub 

Agora, quando executamos nosso código, podemos ver que ele ignora a segunda linha e apenas exibe o valor de C.

O manipulador de erros acima foi um currículo, agora usaremos o Go to, onde diremos ao Excel um destino para ir quando encontrar um erro. Escreva o seguinte código,

Código:

 Sub Sample2 () On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d

O bx é um destino fornecido quando encontra um erro após msgbox D escrever o código a seguir,

Código:

 Sub Sample2 () On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d DOne: Sair Sub 

Now we need to define the destination Bx what it should do when it encounters an error, So write down the following code,

Code:

 Sub Sample2() On Error GoTo bx Dim i As Integer , b As Integer , c As Integer , d As Integer i = 2 b = 0 c = i + b MsgBox c d = i / b MsgBox d DOne: Exit Sub bx: MsgBox " This is another Error " & Err.Description End Sub 

Now when we execute the code we can see that excel first gives us the value for C.

Now in another step, it will give us the prompt we provided it when it encounters an error.

This is how we handle the normal runtime errors in Excel VBA.

Things to Remember

There are a few things we need to remember about Error Handling:

  1. On Error Resume Next Ignores the error.
  2. On Error GoTo Gives excel a destination when it encounters an error.
  3. The description is used to show the exact error occurred to the user.