VBA Error Throw / Raise – Err.Raise – Mensaje de Error Personalizado

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on marzo 29, 2023

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:

Mensaje de Error Division por Cero

 

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

VBA Err Raise Custom MsgBox

vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples