1. Introducción a VBA y el Editor
En esta lección aprenderás a:
- Entender qué es VBA y por qué es útil para automatizar Excel.
- Abrir el Editor de Visual Basic de tres formas distintas.
- Insertar un módulo estándar y escribir tu primera
Sub. - Usar
MsgBoxy la ventana Inmediata conDebug.Print.
¿Qué es VBA?
VBA (Visual Basic for Applications) es el lenguaje de programación integrado en Excel y en toda la suite de Office. Con VBA puedes automatizar tareas repetitivas, crear informes con un clic, construir funciones personalizadas e interactuar con el usuario mediante cuadros de diálogo.
Abrir el Editor de VBA
Vista tipo Excel: la primera fila muestra las letras de columna; la primera columna muestra los números de fila. En las celdas con fórmula (=...), cada referencia lleva un color distinto. Clic en la referencia: resalta solo esa celda. Clic en el resto de la celda (por ejemplo el = o los operadores): resalta todas las celdas citadas. Repetir el mismo gesto sobre lo ya resaltado lo oculta.
Tres formas de abrir el Editor VBAResumen
* Para mostrar la pestaña Desarrollador: Archivo → Opciones → Personalizar cinta de opciones → activa 'Desarrollador'.
| A | B | C | |
|---|---|---|---|
| 1 | Forma | Cómo | Cuándo usarla |
| 2 | Atajo de teclado | Alt + F11 | La más rápida; abre el editor en cualquier momento |
| 3 | Pestaña Desarrollador | Desarrollador → Visual Basic | Visual y fácil de encontrar; actívala en Archivo → Opciones → Personalizar cinta * |
| 4 | Clic derecho en hoja | Clic derecho en pestaña de hoja → Ver código | Abre directo el módulo de esa hoja |
Vista tipo Excel: la primera fila muestra las letras de columna; la primera columna muestra los números de fila. En las celdas con fórmula (=...), cada referencia lleva un color distinto. Clic en la referencia: resalta solo esa celda. Clic en el resto de la celda (por ejemplo el = o los operadores): resalta todas las celdas citadas. Repetir el mismo gesto sobre lo ya resaltado lo oculta.
Zonas del Editor VBA (VBE)Resumen
Si no ves la ventana Inmediata pulsa Ctrl + G o View → Immediate Window.
| A | B | |
|---|---|---|
| 1 | Zona del editor | Para qué sirve |
| 2 | Explorador de proyectos (izquierda) | Lista todos los libros abiertos, hojas y módulos |
| 3 | Ventana de código (centro) | Aquí escribes el código VBA |
| 4 | Ventana Inmediata (Ctrl + G) | Muestra Debug.Print y permite ejecutar líneas sueltas |
| 5 | Insert → Module (menú) | Inserta un módulo estándar para macros generales |
Tu primera Sub — MsgBox
Una subrutina (Sub) es el bloque básico de código. Coloca el cursor dentro y pulsa F5 para ejecutarla:
Debug.Print — la ventana Inmediata
Debug.Print envía texto a la ventana Inmediata sin interrumpir el programa. Ideal para inspeccionar valores:
El operador & une textos y números. Ejecuta la Sub y revisa la ventana Inmediata.
Practica en Excel
Abre Excel (o copia los datos con el botón de la tabla), sigue los pasos y comprueba el resultado en tu hoja.
- Abre Excel y pulsa Alt + F11 para abrir el editor VBA.
- Ve a Insert → Module para insertar un módulo estándar.
- Escribe la Sub Saludo() con MsgBox y ejecútala con F5.
- Prueba abrir el editor con la pestaña Desarrollador y con clic derecho en la pestaña de Hoja1.
- Abre la ventana Inmediata (Ctrl + G), escribe la Sub MostrarInfo() y ejecútala.
Ejercicios de práctica
Ejercicio 1 — Tu primer MsgBox
Crea una Sub llamada Presentacion que muestre tu nombre completo con MsgBox.
Ver solución sugerida
Ejercicio 2 — Concatenar con &
Crea una Sub que construya la frase "Hola, [nombre]. Bienvenido a VBA." usando el operador & y la muestre con MsgBox.
Ver solución sugerida
Ejercicio 3 — Debug.Print con números
Usa Debug.Print para mostrar en la ventana Inmediata el resultado de 250 * 0.19 con el texto "IVA (19%):" antes del número.
Ver solución sugerida
Ejercicio 4 — Tres mensajes seguidos
Escribe una Sub que muestre tres MsgBox en secuencia: primero "Paso 1: Inicio", luego "Paso 2: Procesando..." y finalmente "Paso 3: ¡Listo!".
Ver solución sugerida
Ejercicio 5 — Escribir en una celda
Crea una Sub que escriba el texto "¡VBA funciona!" en la celda A1 de la hoja activa.
Ver solución sugerida
Ejercicio 6 — InputBox interactivo ⭐⭐
Usa InputBox para pedir al usuario su nombre. Luego muestra con MsgBox el mensaje "¡Hola, [nombre]! Estás aprendiendo VBA."
Ver solución sugerida
Ejercicio 7 — Nombre del libro activo ⭐⭐
Crea una Sub que muestre con MsgBox el nombre del libro de Excel que está actualmente abierto. Usa ThisWorkbook.Name.
Ver solución sugerida
Ejercicio 8 — Contar hojas ⭐⭐
Escribe una Sub que cuente cuántas hojas tiene el libro activo y lo muestre con Debug.Print. Usa ThisWorkbook.Sheets.Count.
Ver solución sugerida
Ejercicio 9 — Fecha y hora actual ⭐⭐
Usa Debug.Print para mostrar la fecha y hora actuales con el texto "Ahora es:" antes. Usa la función Now().
Ver solución sugerida
Ejercicio 10 — Escribir en varias celdas ⭐⭐
Crea una Sub que escriba en A1 tu nombre, en B1 tu edad y en C1 el texto "¡Aprendiendo VBA!". Ejecuta y verifica los valores en la hoja.
Ver solución sugerida
Ejercicio 11 — Versión de Excel ⭐⭐⭐
Muestra con MsgBox la versión de Excel instalada y el sistema operativo. Usa Application.Version y Application.OperatingSystem.
Ver solución sugerida
Ejercicio 12 — Macro con comentarios ⭐⭐⭐
Reescribe la Sub MostrarInfo añadiendo al menos 4 comentarios explicativos con '. Documenta el propósito de la Sub, cada variable y cada instrucción principal.
Ejercicio 13 — Macro de inicio y fin ⭐⭐⭐
Crea una Sub ProcesoCompleto que: (1) muestre "Iniciando proceso..." con MsgBox, (2) escriba "Proceso activo" en A1, (3) muestre "Proceso finalizado. Revisa A1." con MsgBox al terminar.
Ver solución sugerida
Ejercicio 14 — Hoja activa ⭐⭐⭐
Escribe una Sub que muestre con MsgBox el nombre de la hoja activa y el número de fila y columna de la celda actualmente seleccionada. Usa ActiveSheet.Name, ActiveCell.Row y ActiveCell.Column.
Ver solución sugerida
Ejercicio 15 — Calculadora básica ⭐⭐⭐
Crea una Sub Calculadora que use dos InputBox para pedir dos números al usuario, sume los valores y muestre el resultado con MsgBox. Usa CDbl() para convertir el texto del InputBox a número.