¿Cómo usar la instrucción On Error en VBA?

On Error es una instrucción en VBA que te permite gestionar errores que ocurren durante la ejecución de tu código. Existen varias maneras de utilizar On Error, pero las dos más comunes son On Error Resume Next y On Error GoTo [etiqueta]. Veamos cómo puedes usar cada una de ellas.

On Error Resume Next

Esta instrucción le dice a VBA que continúe ejecutando la siguiente instrucción después de la que ha causado un error. No detiene la ejecución del programa ni muestra mensajes de error al usuario. Esto puede ser útil si estás verificando algo que podría provocar un error y no quieres que el script se detenga.

Aquí hay un ejemplo de cómo usarlo:

VBA

Sub ErrorHandlerExample()
    On Error Resume Next ' Inicia la gestión de errores
    Dim result As Variant
    
    result = 10 / 0 ' Esta línea generaría un error de división por cero
    
    ' El código continúa aquí incluso si se produjo un error...
    If Err.Number <> 0 Then
        ' Se produjo un error
        Debug.Print "Se detectó un error: " & Err.Description
        ' Limpia el error para continuar con el procesamiento
        Err.Clear
    End If

    ' Resto de tu código...

End Sub

On Error GoTo [etiqueta]

Con On Error GoTo [etiqueta], puedes definir una sección específica para manejar los errores. Si se produce un error, VBA saltará a la etiqueta especificada y ejecutará el código de manejo de errores.

Aquí hay un ejemplo de cómo usar On Error GoTo [etiqueta]:

VBA

Sub ErrorHandlerGoToExample()
    ' Inicia la gestión de errores y define la etiqueta a la que saltar
    On Error GoTo ErrorHandler
    
    Dim result As Variant
    result = 10 / 0 ' Esta línea generaría un error de división por cero
    
    ' Resto de tu código...
    Exit Sub ' Asegúrate de salir del Sub antes de llegar al manipulador de errores
    
ErrorHandler:
    ' Código de manejo de errores
    If Err.Number <> 0 Then
        Debug.Print "Se detectó un error: " & Err.Description
        ' Reseteamos la información del error
        Err.Clear
    End If
    
    ' Opcionalmente, retomamos la ejecución en un punto específico o finalizamos el Sub/Function
    Resume Next ' o puedes usar Resume o Resume [una etiqueta]
End Sub

Es importante tener presente que tanto On Error Resume Next como el uso de On Error GoTo [etiqueta] deben utilizarse con precaución, porque pueden dificultar la identificación de errores en tu programa si no se manejan correctamente. Si usas On Error Resume Next, debes verificar y manejar los errores tan pronto como sea posible después de la línea de código que puede generarlos. Con On Error GoTo [etiqueta], el código de manejo de errores debe ser suficientemente robusto para manejar cualquier posible error y tomar las medidas adecuadas, como limpiar objetos o cerrar archivos que estuvieran abiertos antes del error.

Recuerda siempre desactivar el manejo de errores con On Error GoTo 0 cuando ya no sea necesario para evitar comportamientos inesperados en otras partes de tu código.

Conoce nuestra tienda

Ver más productos

Mejora tu nivel y logra tus objetivo

Excel

Excel cursos

Access

cursos de Access

Power BI

cursos power BI

Ayúdanos a hacer crecer el proyecto

¡Únete a nuestro Grupo de Facebook!

Deja un comentario