Control de errores en VBA

Cuando intentemos ejecutar nuestros programas o macros, seguramente nos aparecerán distintos errores en VBA. Cualquiera de estos errores en tiempo de ejecución puede ser grave: se mostrará un mensaje de error en pantalla y se detendrá el programa.

Por eso es importante conocer las herramientas para poder controlar y gestionar estos errores. Veamos algunas instrucciones que nos van a resultar muy útiles para alcanzar ese fin.

Errores en VBA: On Error GoTo

Mediante esta instrucción podemos especificar las acciones que se llevarán a cabo cuando al ejecutar nuestro programa o macro se genere un error.

Esta es la sintaxis de la instrucción:

On Error Go [Etiqueta]

Etiqueta hace referencia a una línea de nuestro código que habremos programado anteriormente para gestionar este error e indicar las instrucciones que queremos que se ejecuten en caso de producirse. Esta etiqueta debe estar en el mismo procedimiento que la instrucción On Error.

Por ejemplo:

Sub macro()
    Dim x As Integer
    Dim y As Integer
    Dim div As Single
    On Error GoTo Div0
    div = x / y
Exit Sub

Div0: 'etiqueta que indica dónde está el código para manejar el error
    MsgBox "Se ha producido el error " & Err.Description

End Sub

Al ejecutar esta macro se va a generar un error de desbordamiento al intentar dividir por 0. Mediante la instrucción On Error GoTo indicamos a qué parte del programa debe saltarse en caso de producirse el error. La instrucción Exit Sub asegura que no se ejecute el código que está en la etiqueta Div0 en caso de que no se produjera el error.

En este caso, cuando se produce el error mostramos un mensaje de advertencia en pantalla. El objeto Err nos permite conocer el tipo de error y mostrar una descripción en este mensaje.

Errores en VBA: On Error Resume Next

Mediante esta instrucción le indicamos a la aplicación que ignore cualquier error y siga ejecutando nuestra macro o programa. Aunque es una instrucción que se usa con bastante frecuencia, puede dificultar encontrar errores que sea necesario identificar y corregir, errores que no deberíamos ignorar.

On Error GoTo 0

Deshabilita cualquier control de errores que hayamos activado en nuestro procedimiento. Por tanto, si se produce un error en tiempo de ejecución, se detendrá el programa en la línea que causa el error y mostrará un mensaje que describe el error. Es decir, vuelve al comportamiento habitual de VBA. Puede ser útil si lo usamos combinado con la instrucción On Error Resume Next.

También puedes acceder a la explicación del equipo de soporte de Microsoft sobre estas instrucciones.

Para poder avanzar en el desarrollo de macros en Excel, además de cómo trabajar con estas estructuras de bucle, debemos conocer:

Diseño de macros en Excel. Con ejemplos prácticos

Esta entrada es parte de nuestro curso Diseño de macros en Excel. Con ejemplos prácticos