VBA – Throw / Raise Error – Err.Raise – Mensagem de Erro Personalizada

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on September 14, 2023

Este tutorial demonstrará como gerar um erro personalizado no VBA.

Os erros personalizados podem ser criados no código VBA quando o programador deseja retornar uma mensagem específica ao usuário, em vez de confiar na caixa de mensagem de erro padrão que será exibida, ou quando o usuário realmente deseja mostrar um erro personalizado se um determinado valor for inserido em uma variável ou variáveis no código.

Criação de uma Mensagem de Erro Personalizada Simples

O método Err. Raise nos permite personalizar o número do erro e a descrição do erro em nosso código.

Sub TesteGerarErro()
    On Error GoTo eh
    If Range("A1") <> "Fred" Then
       Err.Raise vbObjectError + 1000, , "O texto na célula A1 deve dizer Fred."
    End If
    Exit Sub
 eh:
    MsgBox "Erro do Usuário: " & Err.Description
End Sub

Precisamos gerar um número de erro personalizado que foi documentado por nós mesmos. Usamos a constante vbObjectError além do nosso número personalizado para garantir que não acabemos usando nenhum dos números de erro reservados pelo VBA para uso interno.

Criação de uma Mensagem de Erro Personalizada Dependendo da Entrada do Usuário

Podemos gerar um erro que retornará uma mensagem específica, dependendo das informações inseridas no código.

Primeiro, podemos criar esta função:

Function TesteErroPersonalizado(x As Integer, y As Integer)
   If y - x < 50 Then
      Err.Raise vbObjectError + 50, "em Minha Pasta", "A diferença é muito pequena"
   ElseIf y - x > 50 Then
      Err.Raise vbObjectError - 55, "em Minha Pasta", "A diferença é muito grande"
   End If
End Function

Em seguida, podemos criar este código para testar a função

Sub TesteGeracaoDeErro()
   On Error GoTo eh
   TesteErroPersonalizado 49, 100
   Exit Sub
eh:
   MsgBox ("Erro do Usuário: " & vbCrLf & Err.Description & vbCrLf & Err.Source)
End Sub

Como a diferença entre os números 49 e 100 é maior que 50, a descrição de erro personalizada retornada será A diferença é muito grande”.

Se alterássemos essa linha no código:

TesteErroPersonalizado 55, 100

Então, a descrição de erro personalizada retornada seria “A diferença é muito pequena”.

Se, então, alterássemos a linha de código para que ficasse assim:

TesteErroPersonalizado 50, 100

Então, nenhum erro seria retornado pela função TesteErroPersonalizado.

Substituição da Mensagem de Erro Personalizada do Excel por uma Mensagem Personalizada

Você pode usar o erro existente no Excel para criar sua própria mensagem personalizada para retornar ao usuário.

Veja o exemplo do código abaixo:

Sub MensagemPersonalizada()
 Dim x As Integer, y As Integer
 x = 100
 y = 0
 MsgBox x / y
End Sub

Isso resultará no retorno do seguinte erro

erro divisao zero

No entanto, podemos personalizar a mensagem “Divisão por zero” alterando o código conforme o exemplo abaixo:

Sub MensagemPersonalizada()
  On Error GoTo eh
  Dim x As Integer, y As Integer
  x = 100
  y = 0
  MsgBox x / y
  Exit Sub
 eh:
  Err.Raise Err.Number, , "Não é possível dividir por zero - corrija seus números!"
End Sub

erro mensagem personalizada

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA