Manejo de errores y depuración
El dominio Manejo de errores y depuración evalúa si prevés fallos en ejecución y si sabes localizarlos con las herramientas del editor, en lugar de recurrir a On Error Resume Next de forma indiscriminada.
Sentencias de error
On Error GoTo etiqueta redirige el flujo al manejador; On Error GoTo 0 lo desactiva. Resume reintenta la instrucción que falló, Resume Next continúa en la siguiente y Resume etiqueta salta a otra línea. Err.Number y Err.Description describen el fallo y Err.Clear lo borra.
Ejemplo razonado
On Error GoTo Fallo
...
Salir:
Exit Sub
Fallo:
MsgBox "Error " & Err.Number & ": " & Err.Description
Resume Salir
End Sub
La etiqueta Salir con Exit Sub impide que el flujo normal caiga en el manejador cuando no hay error; sin ella, el bloque de error se ejecutaría siempre. Resume Salir cierra el error de forma controlada en vez de reintentar la instrucción conflictiva.
Números de error frecuentes
9 subíndice fuera de rango; 13 tipos incompatibles; 91 variable de objeto no establecida (falta Set); 1004 error definido por la aplicación; 6 desbordamiento; 424 objeto requerido.
Herramientas
F8 ejecuta línea a línea, F10 paso a paso por encima, F9 pone o quita un punto de interrupción y Ctrl+G abre la ventana Inmediato, donde Debug.Print y ? variable muestran valores. Debug.Assert condición detiene la ejecución cuando la condición es falsa y la ventana Variables locales inspecciona el ámbito actual.
Errores que cuestan puntos
Dejar On Error Resume Next activo tras la línea conflictiva y ocultar fallos posteriores; no poner Exit Sub antes del manejador; usar Resume sin corregir la causa; y confundir un error de compilación (sintaxis) con uno en tiempo de ejecución.