Tratamento de erros do VBA - Guia para tratamento de erros no Excel 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; alguns são erros não executáveis. O erro de sintaxe é quando feito pelo usuário é destacado na cor vermelha 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 que na segunda linha do código, há 4/0, o que não é possível em termos matemáticos, então ele retornará um erro de 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 de tratamento de 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 sintaxe e outros são 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 seguintes três coisas, ou mostrará um erro ou ignorará esse erro, ou mostrará um determinado conjunto de instruções. Para realizar essas tarefas, precisamos dar instruções, e isso é chamado de Tratamento de Erros.

Como lidar com erros no código 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 é executada. O Excel pula essa linha e continua na próxima linha.

Há outro método para tratar o erro é a instrução VBA Goto. Nós fornecemos o Excel como um destino para onde ir quando encontrar um erro. Em vez do código de tratamento de erros anterior, inserimos, escreva 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 trataremos desses 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

Now when we execute our code, we can see that it ignores the second line and just displays the value for C.

The above error handler was a resume next, and now we will use the Go to wherein we will tell we excel a destination to go when it encounters an error. 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

The bx is a destination given when it encounters an error after msgbox D 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

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 cd = i / b MsgBox d DOne: Sair Sub bx: MsgBox "Este é outro erro" & Err.Description End Sub

Agora, quando executamos o código, podemos ver que o excel primeiro nos dá o valor para C.

Agora, em outra etapa, ele nos dará o prompt que fornecemos quando ele encontra um erro.

É assim que lidamos com os erros normais de tempo de execução no Excel VBA.

Coisas para lembrar

Existem algumas coisas que precisamos lembrar sobre o tratamento de erros:

  1. Em Error Resume Next, ignora o erro.
  2. On Error GoTo Dá um destino ao excel quando encontra um erro.
  3. A descrição é usada para mostrar o erro exato que ocorreu ao usuário.

Artigos interessantes...