VBA – Throw / Raise Error – Err.Raise – Mensagem de Erro Personalizada
In this Article
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
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