0052-Tratamento de erro em códigos VBA

Mesmo aqueles que tem mais experiência em programação se deparam com erros exibidos durante a execução dos seus códigos.
Embora nos cerquemos de medidas para evitar que os erros aconteçam, em algumas condições isto se torna de difícil execução.
Tem isto em vista, o VBA, assim como outras linguagens de programação, possue recursos que permitem identificar os erros e controlar o fluxo de execução do código.
Há duas intruções que são utilizadas:

  1. On Error Resume Next: Esta linha controla o código de forma que, na ocorrência de um erro, é executada a linha seguinte do código.

  2. On Error GoTo…: Caso ocorra um erro, o código é desviado para um rótulo identificado, e executado a partir deste ponte.

Além destas, existe a sintaxe On Error GoTo 0 (zero), a qual desativa um tratamento de erro anteriormente ativado. Isto é útil quando temos que tratar possíveis erros em diferentes partes do código.

A seguir colocamos duas versões de um código cada uma delas utilizando uma das instruções vistas acima, obtendo os mesmos resultados do ponto de vista dos objetivos do programa.

1ª Versão:

Sub PesquisarVersao1()
Dim rg      As Range
Dim Texto   As String
Dim vl
Dim Pesq
Dim Msg

vl = Application.InputBox(Prompt:="Informe o valor a ser pesquisado", Title:="Pesquisar Valores", Type:=11)
Set rg = Plan1.[A1:F500]

On Error Resume Next

Pesq = Application.WorksheetFunction.VLookup(vl, rg, 3, False)

If Err.Number  0 Then
Texto = "O valor correspondente é " & Pesq
Else
Texto = "Não foi localizado um valor correspondente"
End If

Msg = MsgBox(Texto, vbOKOnly + vbInformation)

End Sub

2ª Versão:

Sub PesquisarVersao2()
Dim rg      As Range
Dim Texto   As String
Dim vl
Dim Pesq
Dim Msg

vl = Application.InputBox(Prompt:="Informe o valor a ser pesquisado", Title:="Pesquisar Valores", Type:=11)
Set rg = Plan1.[A1:F500]

On Error GoTo Erro

Pesq = Application.WorksheetFunction.VLookup(vl, rg, 3, False)

Texto = "O valor correspondente é " & Pesq
Msg = MsgBox(Texto, vbOKOnly + vbInformation)
Exit Sub
Erro:
Texto = "Não foi localizado um valor correspondente"
Msg = MsgBox(Texto, vbOKOnly + vbInformation)
End Sub
Anúncios

In Excel We Trust

Marcado com: ,
Publicado em Nível: Avançado
5 comentários em “0052-Tratamento de erro em códigos VBA
  1. flaviox27 disse:

    Boa dica. Especialmente o GoTo 0 que eu não conhecia.

  2. jm disse:

    Obrigado.
    Resolvi o meu problema com o seu conselho.

  3. jose carlos disse:

    ola boa noite gostaria de uma ajuda para fazer uma macro de jogo e possível me ajudar ,grato

  4. Wagner Goularte disse:

    quando ocorrem 2 erros na mesma programação, como faço?
    ocorre o erro na primeira linha, mando para o O Error GoTo ERRO
    ai na programacao desenvolvida dentro do ERRO:, ocorre outro erro, como faço para encaminhar para um 3º erro ou apenas finalizar?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: