Contenido
`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:
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]`:
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.