VBA Error Throw / Raise – Err.Raise – Mensaje de Error Personalizado
In this Article
Este tutorial le mostrará cómo generar un error personalizado en VBA.
Los errores personalizados pueden crearse en código VBA cuando el programador desea devolver un mensaje específico al usuario, en lugar de confiar en el cuadro de mensaje de error predeterminado que aparecerá, o cuando el usuario realmente desea mostrar un error personalizado si se introduce un determinado valor en una variable o variables en el código.
Creación de un Mensaje de Error Personalizado Simple
El método Err.Raise nos permite personalizar el número de error y la descripción del error en nuestro código.
Sub Prueba_RaiseError()
On Error GoTo eh
If Range("A1") <> "Fred" Then
Err.Raise vbObjectError + 1000, , "El texto en la celda A1 debería decir Fred."
End If
Exit Sub
eh:
MsgBox "Error de usuario: " & Err.Description
End Sub
Necesitamos elevar un número de error personalizado que hemos documentado nosotros mismos. Usamos la constante vbObjectError además de nuestro número personalizado para asegurarnos de que no terminamos usando ninguno de los números de error que están reservados por VBA para uso interno.
Creando un Mensaje de Error Personalizado Dependiendo de la Entrada del Usuario
Podemos lanzar un error que devuelva un mensaje específico – dependiendo de la información que se introduzca en el código.
Primero, podemos crear esta función:
Function Prueba_Error_Personalizado(x As Integer, y As Integer)
If y - x > 50 Then
Err.Raise vbObjectError + 50, "en mi libro", "La diferencia es demasiado pequeña"
ElseIf y - x < 50 Then
Err.Raise vbObjectError - 55, "en mi libro", "La diferencia es demasiado grande"
End If
End Function
A continuación, podemos crear este código para probar la función:
Sub PruebaErrRaise()
On Error GoTo eh
Prueba_Error_Personalizado 49, 100
Exit Sub
eh:
MsgBox ("Error de Usuario: " & vbCrLf & Err.Description & vbCrLf & Err.Source)
End Sub
Como la diferencia entre los números 49 y 100 es mayor que 50, la descripción de error personalizada devuelta será«La diferencia es demasiado grande«.
Si modificáramos esta línea del código:
Prueba_Error_Personalizado 55, 100
Entonces la descripción de error personalizada devuelta sería «La diferencia es demasiado pequeña» .
Si entonces modificáramos la línea de código para que dijera:
Prueba_Error_Personalizado 50, 100
Entonces la función Prueba_Error_Personalizado no devolvería ningún error.
Reemplazando el Mensaje de Error Personalizado de Excel con un Mensaje Personalizado
Puede utilizar el error de Excel existente para crear su propio mensaje personalizado para devolver al usuario.
Tome el ejemplo del código de abajo:
Sub MensajePersonalizado()
Dim x As Integer, y As Integer
x = 100
y = 0
MsgBox x / y
End Sub
Esto resultará en el siguiente error devuelto:
Sin embargo, podemos personalizar el mensaje «División por cero» alterando el código según el ejemplo siguiente:
Sub MensajePersonalizado()
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, , "You cannot divide by zero - please amend your numbers!""
End Sub