Por mucha experiencia que tengas programando con VBA siempre van a aparecer errores. Cuando esto sucede, puedes lamentarte, buscar ayuda externa o lanzarte tĆŗ mismo a solucionarlo.
Si eres de los mĆos buscarĆ”s la información necesaria y ahorrar el tiempo de buscar la ayuda.
Para solucionar un error primero debes identificarlos. En VBA existen cuatro tipos de errores: de sintaxis, de compilación, de ejecución y de lógica.
Errores de sintaxis en VBA
Estos errores aparecen cuando escribes incorrectamente una instrucción, es decir cuando introduces un código no permitido.
Este tipo de errores son los mƔs fƔciles de detectar, pues el editor de VBA estƔ preparado para avisar justo en el momento en el que se produce el error.
Observa la imagen:

He āolvidadoā introducir la palabra Then
. La lĆnea que contiene el código incorrecto se resalta en rojo y aparece un mensaje de error (sĆ, ya sĆ© que pone āerror de compilaciónā).
Los errores de sintaxis y compilación son prÔcticamente iguales. La diferencia entre un error de sintaxis y uno de compilación es que el de sintaxis aparece inmediatamente al producirse.
Dependiendo de la configuración de tu editor de VBA los errores de sintaxis pueden mostrarse tan pronto como introduces la lĆnea errónea o cuando vayas a ejecutar el procedimiento. Por supuesto, te recomiendo la primera opción.
Para asegurarte de que el error de sintaxis se muestra inmediatamente debes activar la casilla de verificación correspondiente en el cuadro de diÔlogo Opciones (Herramientas > Opciones):

Los errores de compilación en VBA
Antes de ejecutar una macro el código del procedimiento es compilado para comprobar su consistencia. Si durante el compilado VBA detecta que hay algo que no va bien, muestra un cuadro de mensaje con el error.
Te pongo un ejemplo. Cuando comienzas a introducir un bucle For-Next
, siempre comienzas con la palabra For
. Mientras estĆ”s escribiendo el contenido del bucle todavĆa no lo has cerrado con Next
, porque se supone que lo introducirƔs al final. Si al ejecutar el procedimiento VBA comprueba que falta un Next
, es cuando se produce el error y muestra el mensaje.

¿CuÔndo se produce un error de compilación?
Identificar los errores de compilación es sencillo. Tan solo debes fijarte en el texto que aparece en el cuadro de mensaje. Suelen aparecer:
- Cuando introduces la instrucción If sin su End If.
- Cuando introduces la instrucción Select Case sin su End Select.
- Cuando introduces el bucle For sin Next.
- Cuando introduces el bucle Do sin Loop
- Cuando introduces la instrucción With sin End With
- Cuando no declaras una variable y estƔs usando Option Explicit.
- Cuando haces referencia a un procedimiento que no existe (o estĆ” mal escrito).
Los errores en tiempo de ejecución en VBA
Como he comentado, cuando ejecutas una macro, el código se compila. En caso de que VBA no encuentre errores en este proceso, comienza la ejecución.

En el caso anterior estoy haciendo referencia a un archivo que no existe.
Cuando se produce el error el código se detiene (se pone āen pausaā) y muestra ese cuadro de diĆ”logo. Como puedes observar el mensaje que aparece es algo mĆ”s Ćŗtil que los anteriores, pues da algunas pistas de cómo corregirlo. Si haces clic en el botón Depurar se resaltarĆ” la parte del código que provoca el error.

Una vez corregido el error (si decides arreglarlo en ese momento) puedes presionar la tecla F5 para continuar con la ejecución desde la lĆnea en la que se detuvo el código.
Los errores de lógica en VBA
Son los errores mĆ”s difĆciles de detectar y solucionar pues no hacen que el código se detenga. SabrĆ”s que se ha producido un error de este tipo cuando el resultado del procedimiento no sea el que esperas.
El ejemplo tĆpico de error de lógica es cuando el flujo de código entra en un bucle infinito (se puede dar en un bucle Do Loop cuando la condición no se cumple nunca).
Otro ejemplo se podrĆa dar cuando obtienes un resultado incorrecto (cuando se introduce una variable equivocada o si se utiliza un operador equivocado).
En caso de encontrarte con uno de estos errores puedes utilizar la función MsgBox o la instrucción Debug.Print
para conocer en cierto momento el valor de una variable.
TambiĆ©n te puede ayudar la ejecución del procedimiento lĆnea a lĆnea. Para ello sitĆŗate en cualquier lugar del procedimiento Sub (en los Function no funciona) y ve presionando la tecla F8 para avanzar lĆnea por lĆnea y observar el comportamiento tanto del flujo de código como el valor de las variables.
Resumen
Esta ha sido una primera aproximación a los diferentes tipos de error en VBA. Algunos de ellos podrÔs solucionarlos fÔcilmente, pues se muestra ayuda en el cuadro del error. Para otros errores necesitarÔs algo mÔs de ayuda (que abordaré en la próxima publicación).