VBA Tutorial
Empezando con VBA
Buscar..
Observaciones
Esta sección proporciona una descripción general de qué es vba y por qué un desarrollador puede querer usarlo.
También debe mencionar cualquier tema grande dentro de vba, y vincular a los temas relacionados. Dado que la Documentación para vba es nueva, es posible que deba crear versiones iniciales de los temas relacionados.
Versiones
Versión | Versiones de oficina | Notas de fecha de lanzamiento | Fecha de lanzamiento |
---|---|---|---|
Vba6 | ? - 2007 | [Algún tiempo después] [1] | 1992-06-30 |
Vba7 | 2010 - 2016 | [blog.techkit.com] [2] | 2010-04-15 |
VBA para Mac | 2004, 2011 - 2016 | 2004-05-11 |
Accediendo 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.
Por defecto, 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 de opciones", busque el elemento del árbol Desarrollador y configure la casilla de verificación Activar Desarrollador. Haga clic en Aceptar para cerrar el cuadro de diálogo Opciones.
La pestaña Desarrollador ahora está visible en la cinta de opciones 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 activo actualmente, por ejemplo, Hoja de trabajo, Gráfico, Forma.
Puede usar VBA para automatizar casi cualquier acción que se pueda realizar de forma interactiva (manualmente) y también proporcionar una funcionalidad que no está disponible en Microsoft Office. VBA puede crear un documento, agregarle texto, formatearlo, editarlo y guardarlo, todo sin la intervención humana.
Primer módulo y Hello World
Para comenzar a codificar en primer lugar, debe hacer clic con el botón 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 Play en su barra de herramientas o simplemente presione la tecla F5 . ¡Felicidades! Has construido tu primer módulo VBA propio.
Depuración
La depuración es una forma muy poderosa de observar de cerca y corregir el código que funciona incorrectamente (o que 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 ejecutarlo línea por línea para ver si sucede lo que se espera.
- 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 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 - Paso a ( F8 , Depuración - Paso a): ejecuta solo una línea de código, si es una llamada de una función / sub definida por el usuario, 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 funciones / funciones definidas por el usuario.
- Salir ( Ctrl + Shift + F8 , Depurar - Salir): sale de la sub / función actual (ejecute el código hasta su final).
- Ejecutar al cursor ( Ctrl + F8 , Depurar - Ejecutar al cursor): ejecute el código hasta llegar a la línea con el cursor.
- Puede usar
Debug.Print
para imprimir líneas en la ventana Inmediata en tiempo de ejecución. También puede utilizar laDebug.?
como un atajo paraDebug.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 visualización (Ver - Ventana de visualización), aquí puede ver los valores de las expresiones definidas. Para agregar una variable a la ventana de visualización, ya sea:
- Haga clic derecho en él y luego seleccione "Agregar reloj".
- Haga clic derecho en la ventana del reloj, seleccione "Agregar reloj".
- Ir a depurar - Añadir 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 verdadera 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 Print
o con un único signo de interrogación " ?
"
Algunos ejemplos:
-
? ActiveSheet.Name
- devuelve el nombre de la hoja activa -
Print ActiveSheet.Name
: devuelve el nombre de la hoja activa -
? foo
- devuelve el valor defoo
* -
x = 10
series dex
a 10 *
* La obtención / configuración de valores para variables a través de la ventana Inmediata solo se puede realizar durante el tiempo de ejecución
Depuración de mejores prácticas
Siempre que su código no funcione como se esperaba, lo primero que debe hacer es leerlo con cuidado, en busca de errores.
Si eso no ayuda, entonces 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 que la línea no funcione como se espera.
Una vez que tenga la línea que da el resultado incorrecto, pero la razón aún no está clara, intente simplificar expresiones o reemplace las variables con constantes, que pueden ayudar a entender si el valor de las variables es incorrecto.
Si todavía 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, entonces reemplácelas por constantes. (así, en lugar de
Sheets(a*b*c+d^2).Range(addressOfRange)
escribaSheets(4).Range("A2")
) - Describa qué línea da el comportamiento incorrecto y cuál es (error, resultado incorrecto ...)