Los errores en VBA

Los errores en vba excel

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:

error de sintaxis vba excel

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):

comprobación de errores vba excel

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.

error de compilación for sin next vba excel

¿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.

error de ejecución no se ha encontrado vba excel

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.

depurar macro vba excel

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).