miércoles, 17 de junio de 2026

1. ¿Por qué el código falla?

 Si alguna vez has entregado una macro a un compañero o cliente y, a los cinco minutos, te han llamado porque un cuadro de diálogo amarillo con el mensaje "Error 1004 en tiempo de ejecución" bloqueó su Excel, sabes lo frustrante que puede ser.

Escribir código que funcione es solo el 50% del trabajo de un desarrollador; el otro 50% es anticipar qué pasará cuando algo salga mal. En este artículo, aprenderás a usar la instrucción On Error GoTo para que tus aplicaciones sean robustas, profesionales y, sobre todo, a prueba de fallas.



Incluso el código más perfecto puede fallar por factores externos:

  • Una hoja que el código intenta abrir ha sido borrada.

  • Un archivo está protegido con contraseña.

  • El usuario introdujo texto en una celda donde se esperaba un número.

Sin un manejo de errores, VBA simplemente se detiene y muestra el editor de código, algo que nunca debería ver un usuario final.


2. El Protocolo Estándar: On Error GoTo [Etiqueta]

Esta es la forma más profesional de gestionar excepciones. Le dice a Excel: "Si algo falla, no te detengas; salta a esta sección del código donde yo te diré qué hacer".

La Estructura de un Bloque Profesional:

VBA
Sub MiMacroProfesional()
    ' 1. Habilitar el manejador de errores
    On Error GoTo ManejadorErrores

    ' --- AQUÍ VA TU CÓDIGO PRINCIPAL ---
    Dim x As Integer
    x = 10 / 0 ' Esto provocará un error de división por cero
    
    ' 2. Salida limpia del código principal
    Exit Sub

ManejadorErrores:
    ' 3. Bloque de respuesta al error
    MsgBox "Se ha producido un error inesperado." & vbCrLf & _
           "Descripción: " & Err.Description, vbCritical, "Error de Sistema"
    
    ' Aquí podrías registrar el error en una hoja oculta o cerrar archivos
End Sub

3. Variantes de la Instrucción On Error

No todos los errores requieren que detengas la macro. VBA ofrece tres herramientas distintas según la situación:

A. On Error Resume Next

Le dice a VBA que ignore el error y pase a la siguiente línea.

  • Cuándo usarlo: Cuando esperas un error menor que no afecta al resto del proceso (ej. intentar borrar una hoja que quizás no existe).

  • Peligro: Si lo usas en todo el código, podrías ocultar errores críticos y terminar con datos corruptos.

B. On Error GoTo 0

Desactiva cualquier manejador de errores activo. Es útil para "limpiar" el comportamiento después de haber usado Resume Next.

C. On Error GoTo -1

Limpia la memoria del error actual. Es vital si quieres manejar un segundo error dentro de un mismo bloque de errores.


4. El Objeto Err: Tu Caja Negra

Cuando ocurre un fallo, VBA llena un objeto especial llamado Err con información técnica. Úsalo en tus mensajes para dar contexto:

  • Err.Number: El código de identificación del error.

  • Err.Description: Una breve explicación de qué falló.

  • Err.Source: Qué objeto o aplicación generó el problema.


5. Buenas Prácticas de un Desarrollador Senior

  1. Usa Exit Sub antes de la etiqueta de error: Si lo olvidas, el código de error se ejecutará siempre, incluso si la macro funcionó bien.

  2. Restaura el estado del sistema: Si tu macro desactiva las alertas (Application.DisplayAlerts = False), asegúrate de reactivarlas dentro del bloque de error para no dejar el Excel del usuario "mudo".

  3. Registra (Logging): En proyectos grandes, haz que el manejador de errores escriba el fallo en un archivo de texto externo. Esto te ayudará a depurar problemas que ocurren en otras computadoras.


Conclusión

Implementar un manejo de errores sólido es lo que diferencia a un "aficionado a las macros" de un "desarrollador de soluciones". No solo evita que tus herramientas se rompan, sino que proyecta una imagen de profesionalismo y cuidado por el usuario.

¿Tienes una macro específica que se detiene constantemente y no logras atrapar el error? Escribe el fragmento de código en los comentarios y diseñaremos juntos un bloque de control a medida.


¿Te gustaría que en el siguiente post explique cómo usar la "Ventana Inmediato" para depurar errores en tiempo real? Es el secreto mejor guardado de los programadores de VBA.

El Objeto Worksheet: Tu Lienzo de Trabajo

  Si ya dominas la creación de un procedimiento Sub y entiendes que VBA ve a Excel como una colección de piezas, es momento de aprender a m...