¿Ya dominas lo básico? Un curso estructurado de VBA es la vía rápida para dar el salto.
Ver cursos de VBA en UdemyEnlace de afiliado. No te cuesta nada extra.
- 01Preparar el entorno (lo que necesitas)
- 02Tu primera salida (MsgBox)
- 03Declarar variables (Dim)
- 04Condicionales (la sentencia If)
- 05Repetir (la sentencia For)
- 06Repetir (la sentencia Do While)
- 07Escribir un procedimiento Sub
- 08Procedimientos Function (trabajo que devuelve un valor)
- 09Leer y escribir celdas (Range y Cells)
- 10Trabajar con arrays
- 11Trabajar con texto
- 12La sentencia With
- 13Variables de objeto y trabajo con hojas
- 14Recorrer elementos (For Each)
- 15Manejo de errores (On Error)
- 16La sentencia Select Case
- 17Argumentos (ByVal y ByRef)
- 18Trabajar con colecciones (Collection)
- 19Grabar macros y procedimientos de evento
- 20[Proyecto] Construye una hoja de inventario
Manejo de errores (On Error)
En esta lección harás que la macro reaccione con elegancia cuando algo falle.
On Error GoTo Etiqueta hace que, ante un error, la ejecución salte a esa etiqueta en lugar de detenerse con un aviso. Err.Description contiene la explicación del error, y Exit Sub antes de la etiqueta evita que el bloque de error se ejecute cuando todo ha ido bien.
El código de ejemplo intenta dividir entre cero y muestra el mensaje del error. Ese texto lo pone Excel, no tú: Err.Description devuelve el mensaje en el idioma en que esté instalado Office, así que en un Excel en inglés leerías «Division by zero» en lugar de «División entre cero». Por eso, cuando un programa tenga que reaccionar a un error concreto, hay que mirar Err.Number, que es un número y no cambia de un idioma a otro.
Ese Exit Sub es imprescindible y se olvida muy a menudo. Sin él, cuando la macro termina bien sigue avanzando y entra igualmente en el bloque de error, mostrando un mensaje de fallo aunque no haya pasado nada.
Y una advertencia seria: existe On Error Resume Next, que hace que los errores se ignoren y la ejecución continúe. Se ve mucho en código encontrado por internet y es peligroso, porque oculta los fallos en vez de resolverlos: la macro sigue con datos incorrectos y nadie se entera. Solo tiene sentido para una operación concreta que se sabe que puede fallar sin consecuencias, y volviendo a activar el control de errores justo después.
🧪 Este sitio no puede compilar ni ejecutar VBA directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).
🔗 El mismo tema en otros lenguajes
Mira cómo se escribe lo mismo en otro lenguaje.
