Comenzando con VBA

Acceso al Editor de Visual Basic en Microsoft Office

Puede abrir el editor de VB en cualquiera de las aplicaciones de Microsoft Office presionando Alt+F11 o yendo a la pestaña Desarrollador y haciendo clic en el botón “Visual Basic”. Si no ve la pestaña Desarrollador en la cinta, verifique si está habilitada.

De forma predeterminada, la pestaña Desarrollador está deshabilitada. Para habilitar la pestaña Desarrollador, vaya a Archivo -> Opciones, seleccione Personalizar cinta en la lista de la izquierda. En la vista de árbol derecha “Personalizar la cinta”, busque el elemento del árbol Desarrollador y active la casilla de verificación Desarrollador. Haga clic en Aceptar para cerrar el cuadro de diálogo Opciones.

Menú de opciones de archivo

La pestaña Desarrollador ahora está visible en la cinta en la que puede hacer clic en “Visual Basic” para abrir el Editor de Visual Basic. Alternativamente, puede hacer clic en “Ver código” para ver directamente el panel de código del elemento actualmente activo, p. Hoja de trabajo, Gráfico, Forma.

Pestaña Desarrollador

VBE

Puede usar VBA para automatizar casi cualquier acción que se pueda realizar de forma interactiva (manualmente) y también proporcionar funcionalidad que no está disponible en Microsoft Office. VBA puede crear un documento, agregarle texto, formatearlo, editarlo y guardarlo, todo sin intervención humana.

Primer Módulo y Hola Mundo

Para comenzar a codificar en primer lugar, debe hacer clic derecho en su Proyecto VBA en la lista de la izquierda y agregar un nuevo Módulo. Tu primer código Hello-World podría verse así:

Sub HelloWorld()
    MsgBox "Hello, World!"
End Sub

Para probarlo, presione el botón Reproducir en su barra de herramientas o simplemente presione la tecla F5. ¡Felicidades! Ha creado su primer módulo VBA propio.

Depuración

La depuración es una forma muy poderosa de observar más de cerca y corregir el código que funciona incorrectamente (o no funciona).

Ejecutar código paso a paso

Lo primero que debe hacer durante la depuración es detener el código en ubicaciones específicas y luego ejecútelo línea por línea para ver si sucede lo esperado.

  • Punto de interrupción (F9, Depuración - Alternar punto de interrupción): puede agregar un punto de interrupción a cualquier línea ejecutada (por ejemplo, no a las declaraciones), cuando la ejecución llega a ese punto, se detiene y le da el control al usuario.
  • También puede agregar la palabra clave Stop a una línea en blanco para que el código se detenga en esa ubicación en tiempo de ejecución. Esto es útil si, por ejemplo, antes de las líneas de declaración a las que no puede agregar un punto de interrupción con F9
  • Ingresar (F8, Depurar - Ingresar): ejecuta solo una línea de código, si se trata de una llamada de una sub / función definida por el usuario, entonces se ejecuta línea por línea.
  • Paso a paso (Shift+F8, Depuración - Paso a paso): ejecuta una línea de código, no ingresa subs/funciones definidas por el usuario.
  • Salir (Ctrl+Shift+F8, Depurar - Salir): Salir de la sub / función actual (ejecutar el código hasta el final).
  • Run to cursor (Ctrl+F8, Debug - Run to cursor): ejecuta el código hasta llegar a la línea con el cursor.
  • Puede usar Debug.Print para imprimir líneas en la ventana Inmediato en tiempo de ejecución. También puede usar Debug.? como acceso directo para Debug.Print

Ventana de relojes

Ejecutar el código línea por línea es solo el primer paso, necesitamos conocer más detalles y una herramienta para eso es la ventana de observación (Ver - Ventana de observación), aquí puede ver los valores de las expresiones definidas. Para agregar una variable a la ventana de observación, ya sea:

  • Haz clic derecho sobre él y luego selecciona “Agregar reloj”.
  • Haga clic con el botón derecho en la ventana del reloj, seleccione “Agregar reloj”.
  • Ir a Depurar - Agregar reloj.

Cuando agrega una nueva expresión, puede elegir si solo desea ver su valor o también interrumpir la ejecución del código cuando es verdadero o cuando cambia su valor.

Ventana inmediata

La ventana inmediata le permite ejecutar código arbitrario o imprimir elementos precediéndolos con la palabra clave Imprimir o un solo signo de interrogación “?

Algunos ejemplos:

  • ? ActiveSheet.Name - devuelve el nombre de la hoja activa
  • Imprimir ActiveSheet.Name - devuelve el nombre de la hoja activa
  • ? foo - devuelve el valor de foo*
  • x = 10 establece x en 10*

* Obtener/establecer valores para variables a través de la ventana inmediata solo se puede realizar durante el tiempo de ejecución

Mejores prácticas de depuración

Siempre que su código no funcione como se esperaba, lo primero que debe hacer es volver a leerlo detenidamente, en busca de errores.

Si eso no ayuda, comience a depurarlo; para procedimientos cortos, puede ser eficiente simplemente ejecutarlo línea por línea, para los más largos, probablemente necesite establecer puntos de interrupción o interrupciones en las expresiones observadas, el objetivo aquí es encontrar la línea que no funciona como se esperaba.

Una vez que tenga la línea que da el resultado incorrecto, pero la razón aún no está clara, intente simplificar las expresiones o reemplace las variables con constantes, eso puede ayudar a comprender si el valor de las variables es incorrecto.

Si aún no puedes resolverlo, y pide ayuda:

  • Incluya la menor parte posible de su código para comprender su problema
  • Si el problema no está relacionado con el valor de las variables, reemplácelas por constantes. (entonces, en lugar de Sheets(a*b*c+d^2).Range(addressOfRange) escribe Sheets(4).Range("A2"))
  • Describir qué línea da el comportamiento incorrecto y cuál es (error, resultado incorrecto…)