El primer paso para trabajar con VBA en Excel es familiarizarse con el Editor de Visual Basic (también llamado Editor de VBA o Editor de VB).
En este tutorial, cubriré todo lo que hay que saber sobre el Editor de VBA y algunas opciones útiles que debe conocer al codificar en Excel VBA.
¿Qué es el Editor de Visual Basic en Excel?
Visual Basic Editor es una aplicación independiente que forma parte de Excel y se abre cada vez que abre un libro de Excel. De forma predeterminada, está oculto y para acceder a él, debe activarlo.
VB Editor es el lugar donde guarda el código VB.
Hay varias formas de obtener el código en VB Editor:
- Cuando graba una macro, automáticamente crea un nuevo módulo en el VB Editor e inserta el código en ese módulo.
- Puede escribir código VB manualmente en el editor VB.
- Puede copiar un código de algún otro libro de trabajo o de Internet y pegarlo en el Editor de VB.
Abrir el editor de VB
Hay varias formas de abrir el Editor de Visual Basic en Excel:
- Usar un atajo de teclado (el más fácil y rápido)
- Usando la pestaña Desarrollador.
- Usando las pestañas de la hoja de trabajo.
Repasemos cada uno de estos rápidamente.
Atajo de teclado para abrir el editor de Visual Basic
La forma más sencilla de abrir el editor de Visual Basic es utilizar el método abreviado de teclado: ALT + F11 (mantenga presionada la tecla ALT y presione la tecla F11).
Tan pronto como haga esto, se abrirá una ventana separada para el editor de Visual Basic.
Este atajo funciona como un conmutador, por lo que cuando lo use nuevamente, lo llevará de regreso a la aplicación de Excel (sin cerrar el Editor de VB).
El atajo para la versión Mac es Opc + F11 o Fn + Opc + F11
Uso de la pestaña Desarrollador
Para abrir el Editor de Visual Basic desde la cinta:
- Haga clic en la pestaña Desarrollador (si no ve una pestaña de desarrollador, lea esto sobre cómo obtenerla).
- En el grupo Código, haga clic en Visual Basic.
Uso de la pestaña Hoja de trabajo
Este es un método menos utilizado para abrir Vb Editor.
Vaya a cualquiera de las pestañas de la hoja de trabajo, haga clic con el botón derecho y seleccione "Ver código".
Este método no solo abrirá el VB Editor, sino que también lo llevará a la ventana de código para ese objeto de hoja de trabajo.
Esto es útil cuando desea escribir código que funcione solo para una hoja de trabajo específica. Este suele ser el caso de los eventos de la hoja de trabajo.
Anatomía del editor de Visual Basic en Excel
Cuando abre VB Editor por primera vez, puede parecer un poco abrumador.
Hay diferentes opciones y secciones que pueden parecer completamente nuevas al principio.
Además, todavía tiene un aspecto antiguo de Excel de 97 días. Si bien Excel ha mejorado enormemente en diseño y usabilidad a lo largo de los años, el VB Editor no ha visto ningún cambio en su apariencia.
En esta sección, lo guiaré a través de las diferentes partes de la aplicación Editor de Visual Basic.
Nota: Cuando comencé a usar VBA hace años, estaba bastante abrumado con todas estas nuevas opciones y ventanas. Pero a medida que se acostumbre a trabajar con VBA, se sentirá cómodo con la mayoría de ellos. Y la mayoría de las veces, no se le pedirá que use todas las opciones, solo un puñado.
A continuación se muestra una imagen de los diferentes componentes del VB Editor. A continuación, se describen en detalle en las siguientes secciones de este tutorial.
Ahora, repasemos rápidamente cada uno de estos componentes y comprendamos lo que hace:
Barra de menús
Aquí es donde tiene todas las opciones que puede usar en VB Editor. Es similar a la cinta de Excel donde tiene pestañas y opciones con cada pestaña.
Puede explorar las opciones disponibles haciendo clic en cada uno de los elementos del menú.
Notará que la mayoría de las opciones en VB Editor tienen atajos de teclado mencionados al lado. Una vez que se acostumbre a algunos atajos de teclado, trabajar con VB Editor se vuelve realmente fácil.
Barra de herramientas
De forma predeterminada, hay una barra de herramientas en el VB Editor que tiene algunas opciones útiles que probablemente necesitará con más frecuencia. Esto es como la barra de herramientas de acceso rápido en Excel. Le brinda acceso rápido a algunas de las opciones útiles.
Puede personalizarlo un poco quitando o agregando opciones (haciendo clic en la pequeña flecha que apunta hacia abajo al final de la barra de herramientas).
En la mayoría de los casos, la barra de herramientas predeterminada es todo lo que necesita cuando trabaja con VB Editor.
Puede mover la barra de herramientas por encima de la barra de menú haciendo clic en los tres puntos grises (al principio de la barra de herramientas) y arrastrándola por encima de la barra de menú.
Nota: Hay cuatro barras de herramientas en el Editor de VB: estándar, depuración, edición y formulario de usuario. Lo que ves en la imagen de arriba (que también es la predeterminada) es la barra de herramientas estándar. Puede acceder a otras barras de herramientas yendo a la opción Ver y colocando el cursor sobre la opción Barras de herramientas. Puede agregar una o más barras de herramientas al VB Editor si lo desea.
Explorador de proyectos
El Explorador de proyectos es una ventana a la izquierda que muestra todos los objetos abiertos actualmente en Excel.
Cuando trabaja con Excel, cada libro de trabajo o complemento que está abierto es un proyecto. Y cada uno de estos proyectos puede tener una colección de objetos.
Por ejemplo, en la imagen de abajo, el Explorador de proyectos muestra los dos libros de trabajo que están abiertos (Libro1 y Libro2) y los objetos en cada libro de trabajo (hojas de trabajo, ThisWorkbook y Módulo en Libro1).
Hay un icono más a la izquierda de los objetos que puede usar para contraer la lista de objetos o expandir y ver la lista completa de objetos.
Los siguientes objetos pueden formar parte del Explorador de proyectos:
- Todos los libros de trabajo abiertos: dentro de cada libro de trabajo (que también se denomina proyecto), puede tener los siguientes objetos:
- Objeto de hoja de trabajo para cada hoja de trabajo en el libro de trabajo
- Objeto ThisWorkbook que representa el libro de trabajo en sí
- Hoja de gráficos objeto para cada hoja de gráfico (estos no son tan comunes como las hojas de trabajo)
- Módulos - Aquí es donde va el código que se genera con una grabadora de macros. También puede escribir o copiar y pegar código VBA aquí.
- Todos los complementos abiertos
Considere el Explorador de proyectos como un lugar que describe todos los objetos abiertos en Excel en un momento determinado.
El atajo de teclado para abrir el Explorador de proyectos es Control + R (mantenga presionada la tecla de control y luego presione R). Para cerrarlo, simplemente haga clic en el icono de cierre en la parte superior derecha de la ventana del Explorador de proyectos.
Nota: Para cada objeto en el Explorador de proyectos, hay una ventana de código en la que puede escribir el código (o copiarlo y pegarlo desde algún lugar). La ventana de código aparece cuando hace doble clic en el objeto.Ventana Propiedades
La ventana de propiedades es donde puede ver las propiedades del objeto seleccionado. Si aún no tiene la ventana Propiedades, puede obtenerla usando el método abreviado de teclado F4 (o vaya a la pestaña Ver y haga clic en la ventana Propiedades).
La ventana de propiedades es una ventana flotante que puede acoplar en el Editor de VB. En el siguiente ejemplo, lo he acoplado justo debajo del Explorador de proyectos.
La ventana de propiedades nos permite cambiar las propiedades de un objeto seleccionado. Por ejemplo, si quiero que una hoja de trabajo esté oculta (o muy oculta), puedo hacerlo cambiando la propiedad visible del objeto de la hoja de trabajo seleccionado.
Relacionada: Ocultar una hoja de trabajo en Excel (que no se puede descubrir fácilmente)
Ventana de código
Hay una ventana de código para cada objeto que aparece en el Explorador de proyectos. Puede abrir la ventana de código de un objeto haciendo doble clic en él en el área del Explorador de proyectos.
La ventana de código es donde escribirás tu código o copiarás y pegarás un código de otro lugar.
Cuando graba una macro, el código de esta entra en la ventana de código de un módulo. Excel inserta automáticamente un módulo para colocar el código en él al grabar una macro.
Relacionada: Cómo ejecutar una macro (código VBA) en Excel.
Ventana inmediata
La ventana Inmediato se usa principalmente para depurar código. Una forma en que uso la ventana Inmediato es usando una declaración Print.Debug dentro del código y luego ejecutar el código.
Me ayuda a depurar el código y determinar dónde se atasca mi código. Si obtengo el resultado de Print.Debug en la ventana inmediata, sé que el código funcionó al menos hasta esa línea.
Si es nuevo en la codificación de VBA, es posible que le lleve algún tiempo poder utilizar la ventana inmediata para la depuración.
De forma predeterminada, la ventana inmediata no está visible en VB Editor. Puede obtenerlo usando el atajo de teclado Control + G (o puede ir a la pestaña Ver y hacer clic en "Ventana Inmediata").
Dónde agregar código en el editor de VB
Espero que ahora tenga una comprensión básica de lo que es VB Editor y todas sus partes.
En esta sección de este tutorial, le mostraré dónde agregar un código VBA en el Editor de Visual Basic.
Hay dos lugares donde puede agregar el código VBA en Excel:
- La ventana de código de un objeto. Estos objetos pueden ser un libro de trabajo, una hoja de trabajo, un formulario de usuario, etc.
- La ventana de código de un módulo.
Ventana de código de módulo frente a ventana de código de objeto
Primero, permítanme aclarar rápidamente la diferencia entre agregar un código en un módulo y agregar un código en una ventana de código de objeto.
Cuando agrega un código a cualquiera de los objetos, depende de alguna acción de ese objeto que activará ese código. Por ejemplo, si desea mostrar todas las hojas de trabajo en un libro de trabajo tan pronto como abra ese libro de trabajo, el código iría en el objeto ThisWorkbook (que representa el libro de trabajo).
El desencadenante, en este caso, es abrir el libro de trabajo.
De manera similar, si desea proteger una hoja de trabajo tan pronto como se active otra hoja de trabajo, el código para eso iría en la ventana de código de la hoja de trabajo.
Estos disparadores se denominan eventos y puede asociar un código para que se ejecute cuando ocurre un evento.
Relacionada: Obtenga más información sobre eventos en VBA.
Por el contrario, el código del módulo debe ejecutarse manualmente (o también se puede llamar desde otras subrutinas).
Cuando graba una macro, Excel crea automáticamente un módulo e inserta el código de macro grabado en él. Ahora, si tiene que ejecutar este código, debe ejecutar manualmente la macro.
Agregar código VBA en el módulo
Si bien la grabación de una macro crea automáticamente un módulo e inserta el código en él, existen algunas limitaciones al utilizar una grabadora de macros. Por ejemplo, no puede usar bucles ni condiciones If Then Else.
En tales casos, es mejor copiar y pegar el código manualmente o escribir el código usted mismo.
Se puede usar un módulo para contener los siguientes tipos de códigos VBA:
- Declaraciones: Puede declarar variables en un módulo. La declaración de variables le permite especificar qué tipo de datos puede contener una variable. Puede declarar una variable solo para una subrutina o para todas las subrutinas en el módulo (o todos los módulos)
- Subrutinas (procedimientos): Este es el código que tiene los pasos que desea que realice VBA.
- Procedimientos de función: Este es un código que devuelve un solo valor y puede usarlo para crear funciones personalizadas (también llamadas Funciones definidas por el usuario o UDF en VBA)
De forma predeterminada, un módulo no forma parte del libro de trabajo. Primero debe insertarlo antes de usarlo.
Agregar un módulo en el editor VB
A continuación se muestran los pasos para agregar un módulo:
- Haga clic con el botón derecho en cualquier objeto del libro de trabajo (en el que desee el módulo).
- Coloca el cursor sobre la opción Insertar.
- Haga clic en Módulo.
Esto crearía instantáneamente una carpeta llamada Módulo e insertaría un objeto llamado Módulo 1. Si ya tiene un módulo insertado, los pasos anteriores insertarían otro módulo.
Una vez que se inserta el módulo, puede hacer doble clic en el objeto del módulo en el Explorador de proyectos y se abrirá la ventana de código para él.
Ahora puede copiar y pegar el código o escribirlo usted mismo.
Extracción del módulo
A continuación se muestran los pasos para eliminar un módulo en Excel VBA:
- Haga clic con el botón derecho en el módulo que desea eliminar.
- Haga clic en la opción Eliminar módulo.
- En el cuadro de diálogo que se abre, haga clic en No.
Nota: puede exportar un módulo antes de eliminarlo. Se guarda como un archivo .bas y puede importarlo en algún otro proyecto. Para exportar un módulo, haga clic con el botón derecho en el módulo y haga clic en "Exportar archivo".
Agregar código a la ventana de código de objeto
Para abrir la ventana de código de un objeto, simplemente haga doble clic en él.
Cuando se abre, puede ingresar el código manualmente o copiar y pegar el código de otros módulos o de Internet.
Tenga en cuenta que algunos de los objetos le permiten elegir el evento para el que desea escribir el código.
Por ejemplo, si desea escribir un código para que suceda algo cuando se cambia la selección en la hoja de trabajo, primero debe seleccionar las hojas de trabajo del menú desplegable en la parte superior izquierda de la ventana de código y luego seleccionar el evento de cambio del menú desplegable -abajo a la derecha.
Nota: estos eventos son específicos del objeto. Cuando abre la ventana de código de un libro, verá los eventos relacionados con el objeto del libro. Cuando abre la ventana de código de una hoja de trabajo, verá los eventos relacionados con el objeto de la hoja de trabajo.
Personalización del editor de VB
Si bien la configuración predeterminada del Editor de Visual Basic es lo suficientemente buena para la mayoría de los usuarios, le permite personalizar aún más la interfaz y algunas funcionalidades.
En esta sección del tutorial, le mostraré todas las opciones que tiene al personalizar el Editor de VB.
Para personalizar el entorno de VB Editor, haga clic en Herramientas en la barra de menú y luego haga clic en Opciones.
Esto abrirá el cuadro de diálogo Opciones que le dará todas las opciones de personalización en el Editor de VB. El cuadro de diálogo "Opciones" tiene cuatro pestañas (como se muestra a continuación) que tienen varias opciones de personalización para el Editor de Visual Basic.
Repasemos rápidamente cada una de estas pestañas y las opciones importantes de cada una.
Pestaña del editor
Si bien la configuración incorporada funciona bien en la mayoría de los casos, permítanme revisar las opciones en esta pestaña.
A medida que se vuelva más competente en el trabajo con VBA en Excel, es posible que desee personalizar el Editor de VB utilizando algunas de estas opciones.
Verificación automática de sintaxis
Cuando trabaje con VBA en Excel, tan pronto como cometa un error de sintaxis, aparecerá un cuadro de diálogo emergente (con una descripción del error). Algo como se muestra a continuación:
Si desactiva esta opción, este cuadro emergente no aparecerá incluso cuando cometa un error de sintaxis. Sin embargo, habría un cambio de color en el texto del código para indicar que hay un error.
Si es un principiante, le recomiendo que mantenga esta opción habilitada. A medida que adquieras más experiencia con la codificación, es posible que estas ventanas emergentes te resulten irritantes y luego puedas desactivar esta opción.
Requerir declaración de variable
Esta es una opción que recomiendo habilitar.
Cuando trabaja con VBA, usa variables para contener diferentes tipos de datos y objetos.
Cuando habilita esta opción, inserta automáticamente la instrucción "Option Explicit" en la parte superior de la ventana de código. Esto te obliga a declarar todas las variables que estás usando en tu código. Si no declara una variable e intenta ejecutar el código, mostrará un error (como se muestra a continuación).
En el caso anterior, utilicé la variable Var, pero no la declaré. Entonces, cuando intento ejecutar el código, muestra un error.
Esta opción es bastante útil cuando tienes muchas variables. A menudo me ayuda a encontrar nombres de variables mal escritos, ya que se consideran no declarados y se muestra un error.
Nota: Cuando habilita esta opción, no afecta los módulos existentes.
Miembro de lista automática
Esta opción es bastante útil ya que le ayuda a obtener una lista de propiedades de métodos para un objeto.
Por ejemplo, si quiero eliminar una hoja de trabajo (Sheet1), necesito usar la línea Sheet1.Delete.
Mientras escribo el código, tan pronto como escriba el punto, me mostrará todos los métodos y propiedades asociados con el objeto Hoja de trabajo (como se muestra a continuación).
La función de lista automática es excelente ya que le permite:
- Seleccione rápidamente la propiedad y el método de la lista y ahorre tiempo
- Muestra todas las propiedades y métodos que puede que no conozca.
- Evite cometer errores ortográficos
Esta opción está habilitada de forma predeterminada y recomiendo mantenerla así.
Opciones de información rápida automática
Cuando escribe una función en la hoja de cálculo de Excel, le muestra cierta información sobre la función, como los argumentos que toma.
Del mismo modo, cuando escribe una función en VBA, le muestra cierta información (como se muestra a continuación). Pero para que eso suceda, debe asegurarse de que la opción Auto Quick Info esté habilitada (que es la predeterminada).
Opciones de consejos de datos automáticos
Cuando revisa su código línea por línea y coloca el cursor sobre el nombre de una variable, le mostrará el valor de la variable.
Lo encuentro bastante útil al depurar el código o revisar el código línea por línea que tiene bucles.
En el ejemplo anterior, tan pronto como coloco el cursor sobre la variable (var), muestra el valor que tiene.
Esta opción está habilitada de forma predeterminada y te recomiendo que la mantengas así.
Sangría automática
Dado que los códigos de VBA pueden volverse largos y complicados, el uso de sangría aumenta la legibilidad del código.
Al escribir código, puede aplicar sangría con la tecla de tabulación.
Esta opción asegura que cuando haya terminado con la línea sangrada y presione enter, la siguiente línea no comienza desde el principio, sino que tiene la misma sangría que la línea anterior.
En el ejemplo anterior, después de escribir la línea Debug.Print y presionar enter, comenzará justo debajo (con el mismo nivel de sangría).
Encuentro esta opción útil y desactivarla significaría sangrar manualmente cada línea en un bloque de código que quiero sangrar.
Puede cambiar el valor de sangría si lo desea. Lo mantengo en el valor predeterminado.
Edición de texto con arrastrar y soltar
Cuando esta opción está habilitada, le permite seleccionar un bloque de código y arrastrarlo y soltarlo.
Ahorra tiempo, ya que no es necesario cortarlo primero y luego pegarlo. Simplemente puede seleccionarlo y arrastrarlo.
Esta opción está habilitada de forma predeterminada y te recomiendo que la mantengas así.
Predeterminado a la vista de módulo completo
Cuando esta opción está habilitada, podrá ver todos los procedimientos en un módulo en una sola lista desplazable.
Si desactiva esta opción, solo podrá ver un módulo a la vez. Tendrá que hacer una selección del módulo que desea ver en el menú desplegable en la parte superior derecha de la ventana de código.
Esta opción está habilitada de forma predeterminada y recomiendo mantenerla así.
Una razón por la que puede deshabilitarlo cuando tiene varios procedimientos que son enormes y desplazarse por ellos es que lleva tiempo, o cuando tiene muchos procedimientos y desea encontrarlos rápidamente en lugar de perder el tiempo en el desplazamiento.
Separador de procedimientos
Cuando esta opción está habilitada, verá una línea (una especie de divisor) entre dos procedimientos.
Encuentro esto útil, ya que muestra visualmente cuándo termina un procedimiento y comienza el otro.
Está habilitado de forma predeterminada y recomiendo mantenerlo así.
Ficha Formato del editor
Con las opciones de la pestaña Formato del editor, puede personalizar la apariencia de su código en la ventana de código.
Personalmente, conservo todas las opciones predeterminadas, ya que estoy de acuerdo. Si lo desea, puede modificar esto según sus preferencias.
Para realizar un cambio, primero debe seleccionar una opción en el cuadro Colores de código. Una vez que se selecciona una opción, puede modificar el primer plano, el fondo y el color del indicador.
El tipo de fuente y el tamaño de fuente también se pueden configurar en esta pestaña. Se recomienda utilizar una fuente de ancho fijo como Courier New, ya que hace que el código sea más legible.
Tenga en cuenta que la configuración del tipo y tamaño de fuente seguirá siendo la misma para todos los tipos de código (es decir, todos los tipos de código que se muestran en el cuadro de color del código).
A continuación se muestra una imagen en la que seleccioné Breakpoint y puedo cambiar su formato.
Nota: La opción Barra indicadora de margen, cuando está habilitada, muestra una pequeña barra de margen a la izquierda del código. Es útil ya que muestra indicadores útiles al ejecutar el código. En el ejemplo anterior, cuando establece un punto de interrupción, automáticamente mostrará un punto rojo a la izquierda de la línea en la barra de margen. Alternativamente, para establecer un punto de interrupción, simplemente puede hacer clic en la barra de margen a la izquierda de la línea de código que desea como punto de interrupción.
De forma predeterminada, la barra indicadora de margen está habilitada y recomiendo mantenerla así.
Una de mis estudiantes del curso de VBA encontró útiles estas opciones de personalización y era daltónica. Usando las opciones aquí, pudo establecer el color y los formatos que le facilitaron trabajar con VBA.
Pestaña General
La pestaña General tiene muchas opciones, pero no es necesario que cambie ninguna de ellas.
Te recomiendo que mantengas todas las opciones como están.
Una opción importante que debe conocer en esta pestaña es Manejo de errores.
De forma predeterminada, la opción "Interrumpir en errores no controlados" está seleccionada y recomiendo mantenerla así.
Esta opción significa que si su código encuentra un error, y aún no ha manejado ese error en su código, entonces se romperá y se detendrá. Pero si ha abordado el error (por ejemplo, utilizando las opciones On Error Resume Next o On Error Goto), entonces no se romperá (ya que los errores no se eliminan).
Pestaña de acoplamiento
En esta pestaña, puede especificar qué ventanas desea acoplar.
Acoplamiento significa que puede fijar la posición de una ventana (como el explorador de proyectos o la ventana Propiedades) para que no flote y pueda ver todas las ventanas diferentes al mismo tiempo.
Si no se acopla, podrá ver una ventana a la vez en modo de pantalla completa y tendrá que cambiar a la otra.
Recomiendo mantener la configuración predeterminada.