curso
VBA Excel: Cómo empezar y facilitar tu trabajo
Visual Basic para Aplicaciones (VBA) en Excel es un lenguaje que permite a los usuarios automatizar tareas repetitivas y mejorar la funcionalidad de Excel mucho más allá de sus características estándar. Así que, tanto si eres un principiante que quiere aumentar la productividad como si eres un usuario avanzado que busca agilizar flujos de trabajo complejos, VBA está aquí para facilitarte las cosas.
En esta guía, te explicaré conceptos básicos y avanzados de VBA. Sin embargo, si eres nuevo en Excel, empieza con Fundamentos de Excel para construir una base sólida antes de avanzar a VBA.
¿Qué es VBA en Excel?
Visual Basic para Aplicaciones (VBA) es un lenguaje de programación utilizado para automatizar tareas y mejorar la funcionalidad de las aplicaciones de Microsoft Office. Puedes utilizarlo con Excel, Word, Access y otros programas de Office, aunque probablemente su uso más extendido sea para crear macros personalizadas en Excel, de lo que nos ocuparemos.
Personalmente, la primera vez que utilicé VBA fue para automatizar un informe semanal que antes tardaba horas en compilarse manualmente. Con unas pocas líneas de código, reduje el proceso a un solo clic de botón y ahorré un montón de horas. A partir de entonces, sé que invertir algo de tiempo en dominarlo me reportaría enormes beneficios en términos de productividad.
Avanza en tu carrera con Excel
Adquiere los conocimientos necesarios para sacar el máximo partido a Excel, sin necesidad de experiencia.
Términos importantes de VBA en Excel
Antes de trabajar con VBA, debes comprender sus términos y conceptos clave. Así pues, aquí tienes una lista de algunos de los términos más utilizados que encontrarás cuando empieces a automatizar tareas y a crear soluciones personalizadas en Excel.
-
Módulos son los contenedores del código VBA, donde se almacenan los procedimientos y las funciones.
-
Objetos son los bloques de construcción de VBA. Representan elementos como libros de trabajo, hojas de cálculo y celdas.
-
Procedimientos son los bloques de código que realizan tareas específicas, a menudo clasificadas como subprocedimientos o funciones.
-
Sentencias son las instrucciones dentro de un procedimiento que indican a Excel (o Word o Access) qué acciones debe realizar.
-
Variables almacenan datos que pueden utilizarse y manipularse dentro de tu código.
-
Los operadores lógicos comparan valores y toman decisiones en función de los resultados. Incluyen operadores como
And
,Or
yNot
.
Primeros pasos con VBA en Excel
Para empezar a utilizar VBA, tendrás que acceder al editor VBA. Aquí es donde escribirás y editarás tu código VBA. Veamos cómo conseguirlo:
Activar la pestaña Desarrollador
El primer paso es activar la pestaña Desarrollador, que suele estar oculta en la cinta de opciones. Para ello:
- Haz clic con el botón derecho del ratón en cualquier lugar de la cinta de opciones.
Cinta de opciones en Excel. Imagen del autor.
- Selecciona la opción Personalizar la cinta de opciones... opción.
Personaliza la cinta de opciones para activar la pestaña Desarrollador. Imagen del autor.
- Aparecerá un cuadro de diálogo. Marca laopción Developer y pulsa OK.
Seleccionando la opción Desarrollador. Imagen del autor.
Ahora puedes ver un Desarrollador en la parte superior de la cinta de opciones.
La pestaña Desarrollador está activada en la cinta de opciones. Imagen del autor.
Abrir el editor VBA
Una vez activada la pestañaDesarrollador, podrás acceder al editor VBA. Para ello, haz clic en la pestaña Desarrollador y selecciona Visual Basic entre las opciones. También puedes utilizar el atajo de teclado ALT + F11 para abrir directamente el editor VBA.
VBA editor. Imagen del autor.
Navegar por la interfaz VBA
El editor VBA puede parecer inicialmente intimidante, pero es fácil de usar. Entendamos sus pocas áreas clave:
- Panel de código es donde escribes y editas tu código VBA.
- Explorador de proyectos muestra una vista jerárquica de los proyectos y módulos de tu libro de trabajo.
- Ventana Propiedades Muestra las propiedades de los objetos seleccionados para personalizar su configuración.
Interfaz VBA en Excel. Imagen del autor.
Escribir código VBA en Excel
Ahora que ya estás familiarizado con el editor VBA, es hora de empezar a escribir algo de código. El código VBA consta de diferentes partes, como subprocedimientos y funciones. Son conjuntos de instrucciones que indican a Excel lo que debe hacer. No te preocupes si nunca has programado antes: te lo explicaré paso a paso.
Escribir una subrutina VBA
Antes de escribir una macro, tienes que crear un entorno de macro. Para ello, sigue estos pasos:
- Dentro del editor VBA, selecciona Insertar > Módulo. Se creará un nuevo módulo con el nombre por defecto Módulo1.
Selecciona Módulo en la pestaña Insertar. Imagen del autor.
- Puedes cambiar el nombre del módulo en las Propiedades propiedades.
Cambia el nombre del módulo VBA. Imagen del autor.
Ahora que ya sabes cómo configurar el entorno para crear una macro, vamos a crear juntos nuestra primera macro para mostrar un mensaje. Por defecto, la ventana de código se abre cuando se crea el módulo. Si no funciona en tu caso, haz clic con el botón derecho del ratón en el módulo que has creado y haz clic en Ver código. Aparecerá la ventana de código donde puedes escribir tus macros.
Aquí estoy creando una macro para mostrar el mensaje Hello, World!
. Para ello, escribo el siguiente código en el panel de código:
Sub ShowMessage()
MsgBox "Hello, World!"
End Sub
Toma:
-
Sub es la palabra clave de una subrutina, que es un bloque de código que realiza una tarea específica. En VBA, una subrutina no devuelve un valor.
-
MostrarMensaje es el nombre de la subrutina. Puedes ponerle el nombre que quieras, siempre que siga las convenciones de nomenclatura de VBA (por ejemplo, sin espacios, no puede empezar por un número).
-
() se utilizan aquí para definir los parámetros de la subrutina. Como no se necesitan parámetros para esta tarea, los paréntesis están vacíos.
-
MsgBox es una función VBA integrada que muestra un cuadro de mensaje en la pantalla.
-
End Sub La declaración indica el final de la subrutina. Todo lo que hay entre
Sub
yEnd Sub
es el código que se ejecutará cuando se llame a la subrutina. -
Las cadenas de texto en VBA van entre comillas dobles. Aquí queremos que la cadena
Hello, World!
aparezca dentro del cuadro de mensaje.
Escribir una macro. Imagen del autor.
- Ahora, es el momento de ejecutar el código. Utiliza el atajo de teclado F5. Si quieres hacerlo manualmente, ve a lapestaña Desarrollador y selecciona Macros. Pulsa Corre.
Selecciona la opción Macros en la pestaña Desarrollador. Imagen del autor.
Ahora puedes ver aparecer el cuadro de mensaje en tu hoja de Excel.
Buzón de mensajes. Imagen del autor.
Comprender los objetos en VBA
En VBA, los objetos te permiten controlar distintos elementos dentro de Excel y automatizar tareas para conseguir flujos de trabajo más eficaces. Hay tres objetos clave: Libro de Trabajo, Hoja de Trabajo y Rango. Comprendamos cada una de ellas con un ejemplo práctico.
El objetoLibro de trabajo es cualquier archivo de Excel que esté abierto en ese momento. Nos permite realizar acciones como añadir nuevas hojas o guardar las hojas existentes dentro del libro de trabajo. En este ejemplo, quiero añadir una hoja a la hoja abierta actualmente y luego guardarla. Al principio, tenía Sheet1
. Para añadir otra hoja, escribo el siguiente código:
Sub AddSheetAndSaveWorkbook()
' Adds a new worksheet to the active workbook
ActiveWorkbook.Sheets.Add
' Saves the workbook
ActiveWorkbook.Save
End Sub
Este código funciona exactamente igual que el anterior, pero aquí he añadido comentarios. Los comentarios empiezan por '
y no afectan a tu código. Sólo los añadimos para que el código sea más claro.
Puedes ver que ahora se ha creado otra hoja, Sheet2
.
Añade y guarda una nueva hoja en la hoja existente utilizando VBA. Imagen del autor.
El objeto Hoja de cálculo representa la hoja actualmente activa en Excel. Con ella puedes modificar o manipular la hoja activa. Por ejemplo, quiero cambiar el nombre de la hoja activa. Para ello, introduzco el siguiente código:
Sub RenameActiveSheet()
' Renames the active sheet to "Sales Report".
ActiveSheet.Name = "Sales Report"
End Sub
Cambiar el nombre de la hoja de cálculo utilizando VBA. Imagen del autor.
Ahora, Sheet1
ha pasado a llamarse Sales Report
.
Cambiar el nombre de la hoja de cálculo de Excel utilizando VBA. Imagen del autor.
El objeto Rango se refiere a un grupo concreto de celdas o a una sola celda que podemos manejar según nuestras necesidades. En el siguiente ejemplo, selecciono un rango de celdas de F3 a I3 y cambio el color de fondo. Para ello, escribo el siguiente código:
Sub FormatRange()
' Selects the range from A1 to C6
Range("F3:I3"). Select
' Changes the background color of the selected range to Green
Selection.Interior.Color = RGB(101, 255, 143)
End Sub
Seleccionar rango y cambiar el color utilizando VBA. Imagen del autor.
Puedes ver la diferencia en los resultados.
Cambiar el color utilizando VBA en Excel. Imagen del autor.
Crear variables en VBA
Al igual que otros lenguajes de programación, las variables de VBA almacenan dos tipos de datos principales: números y texto. Para utilizarlas en VBA, primero debes declarar la variable utilizando la palabra clave según tus preferencias, seguida del nombre de la variable y el tipo de datos.
Keyword variableName As DataType
Toma:
-
Keyword
puede serDim
,Static
,Public
, yPrivate
. -
variableName
se refiere al nombre elegido para esta variable (sin espacios). -
As
se utiliza para declarar el tipo de variable. -
DataType
se refiere al tipo de variable, comoInteger
.
Al trabajar con variables, también tienes que respetar algunas reglas:
- La longitud debe ser inferior a 255 caracteres.
- No se permiten espacios entre caracteres.
- El nombre no puede empezar por un número.
- No uses puntos en el nombre.
Tipo de datos numéricos
Los tipos de datos numéricos en VBA se utilizan para almacenar valores numéricos.
Tipo de datos | Almacenado | Rango de valores |
---|---|---|
Byte | 1 Byte | Almacena números enteros de 0 a 255 |
Entero | 2 Byte | Almacena números enteros dentro del intervalo de -32.768 a 32.767 |
Largo | 4 Bytes | Almacena números enteros mayores, que van de -2.147.483.648 a 2.147.483.647 |
Individual | 4 Bytes | Almacena números decimales con una sola precisión |
Doble | 8 Bytes | Almacena números decimales con doble precisión |
Moneda | 8 Bytes | Almacena números con decimales fijos |
Variante (texto) | Longitud del texto + 22 bytes | De 0 a 2.000 millones de caracteres |
Tipo de dato no numérico
Los tipos de datos no numéricos en VBA almacenan valores que no son números.
Tipo de datos | Almacenado | Rango de valores |
---|---|---|
Cadena | Longitud de la cadena | Almacena texto |
Fecha | 8 Bytes | Almacena la fecha y la hora |
Booleano | 2 Bytes | Tiendas Verdadero o Falso |
Variante | 16 Bytes | Almacena cualquier tipo de dato y se utiliza cuando el tipo no se conoce de antemano |
Automatizar tareas con macros VBA de Excel
Las macros son esencialmente una serie de instrucciones creadas en VBA para realizar tareas repetitivas. Con una macro, puedes grabar una serie de acciones, como formatear celdas, copiar datos o realizar cálculos. Después de guardar la macro, podemos volver a aplicar estas acciones con un solo clic. Esto ahorra tiempo, especialmente cuando se trabaja con grandes conjuntos de datos o tareas.
Por ejemplo, si sueles dar el mismo formato a tus informes, puedes grabar una macro que aplique todos los pasos de formato necesarios en lugar de hacerlo manualmente cada vez. Más tarde, puedes ejecutar esta macro para formatear nuevos datos. Hemos mostrado un par de ejemplos básicos, pero imagina hacer más acciones pequeñas con un solo clic. Aunque no tengas experiencia en codificación, puedes automatizar las tareas rutinarias para agilizar el flujo de trabajo y reducir las posibilidades de error que pueden producirse al realizar acciones repetitivas manualmente.
Grabar una macro de Excel
Veamos cómo puedes grabar una macro para hacer algunos cambios de formato:
- Ir a la página Desarrollador ficha > Grabar macro .
- Aparecerá un cuadro de diálogo. Dale a tu macro un nombre como hice yo FormatoCélulas.
- Asigna un atajo de teclado si lo deseas. Le asigné Ctrl+S.
- Haz clic en OK para iniciar la grabación.
Ahora que la macro empieza a grabar, realiza las acciones que quieras automatizar. Para este ejemplo, estoy registrando algunos cambios de formato en una tabla sencilla. Cuando lo hayas completado, vuelve a la pestaña Desarrollador y haz clic en el botónDetener grabación. A continuación, puedes ver la macro en acción.
Grabar una macro utilizando VBA en Excel. Gif de Autor.
Ahora, si tienes otro conjunto de datos en otra hoja y quieres el mismo formato también en ese conjunto de datos, en lugar de formatearlo todo de nuevo, pulsa la tecla de acceso directo que has creado (en mi caso, es Ctrl+S). Si no, ve a hoja2 > pestaña Desarrollador > Macros > Ejecutar para hacerlo manualmente.
Utilizando la macro de Excel. Gif de Autor.
Editar macros de Excel
Después de grabar una macro, puedes incluso ajustar o personalizar sus acciones. He aquí cómo:
- Ir a la página Desarrollador y haz clic en Conceptos básicos visuales.
- Aparecerá el editor VBA. Ahora, en elExplorador de Proyectos de , busca el libro de trabajo donde está almacenada tu macro .
- Despliega la carpetaMódulos y haz doble clic en el módulo que contiene tu macro. La ventana de código mostrará el código VBA de tu macro grabada.
Código de la macro grabada en Excel. Imagen del autor.
Cada línea de código muestra la acción que realizaste durante la grabación. Desde aquí, puedes modificar el código grabado para personalizar la macro según tu elección. En mi caso, puse Selection.Font.Bold
en False
para eliminar la negrita. Una vez realizadas las ediciones, guarda los cambios haciendo clic en el botón Guardar o pulsa Ctrl+Sy Ejecuta el código para aplicar los cambios.
Personalizar la macro VBA de Excel. Imagen del autor.
Después de ejecutar tu macro, puedes ver los resultados: las columnas que antes estaban en negrita ya no lo están.
Utilizar una macro en Excel. Imagen del autor
Escribir macros personalizadas de Excel
Puede haber algunas tareas avanzadas en las que no puedas grabar una macro. En estos casos, tienes que escribir una macro desde cero. Por ejemplo, quiero copiar los datos de una hoja de cálculo a otra. Así es como escribo una macro personalizada:
- Abre manualmente el editor VBA en la primera hoja o pulsa Alt+F11.
- Inserta un módulo nuevo.
- Escribe el siguiente código en el panel de código.
Sub CopyData()
Sheets("Sheet1").Range("B1:E21").Copy Destination:=Sheets("Sheet2").Range("B1")
End Sub
- Guarda la macro y pulsa Ejecuta.
Ahora puedes ver que los datos de la Hoja1 se han se han copiado en la Hoja2.
Escribir una macro personalizada utilizando VBA. Gif de Autor.
Reflexiones finales
Desde automatizar tareas repetitivas hasta crear macros complejas, VBA abre un mundo de posibilidades dentro de Excel. A medida que te sientas más cómodo con los conceptos básicos, practica escribiendo código y explora gradualmente las funciones más avanzadas de VBA. Recuerda que la clave para dominar VBA -o cualquier lenguaje de programación- es la práctica constante y la voluntad de experimentar. Para mejorar aún más tus habilidades, considera la posibilidad de explorar estos recursos adicionales. Los cursos Análisis de datos en Excel y Aprende Excel son excelentes para aprender más sobre las funciones de Excel.
Si quieres ampliar tus conocimientos de codificación más allá de VBA, la guía Cómo ser programador en 2024 te ofrece una hoja de ruta. Compruébalo si te interesa este campo. Además, el curso Modelización Financiera en Excel es perfecto para quienes estén interesados en crear modelos financieros detallados.
Aprende los fundamentos de Excel
Soy una estratega de contenidos a la que le encanta simplificar temas complejos. He ayudado a empresas como Splunk, Hackernoon y Tiiny Host a crear contenidos atractivos e informativos para su público.
Preguntas frecuentes sobre VBA en Excel
¿Cuál es la finalidad de la declaración explícita en VBA?
Explícito ayuda a garantizar que todas las variables se declaran explícitamente antes de su uso, reduciendo los errores y haciendo que tu código sea más fácil de mantener.
¿Cómo protejo mi código VBA con una contraseña?
Puedes proteger tu código VBA y endoal editor VBA > Herramientas > Propiedades de VBAProyecto > pestaña Protección. Comprueba el Bloquear proyecto para visualización y establece una contraseña.
¿Cuál es la diferencia entre ActiveWorkbook y ThisWorkbook en VBA?
ActiveWorkbook
se refiere al libro de trabajo actualmente enfocado, que puede no contener el código VBA. Thisworkbook
se refiere al libro de trabajo donde reside el código VBA, independientemente del libro de trabajo activo.
¿Qué son las UserForms en VBA y cómo se pueden utilizar?
UserForms
son cuadros de diálogo personalizados en VBA que permiten a los usuarios introducir datos. Pueden utilizarse para crear formularios interactivos para la introducción de datos, la selección o la interacción del usuario que requiera una interfaz personalizada.
Aprende Excel y VBA con DataCamp
programa
Fundamentos de Excel
curso