Café y Código

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 MsgBox y la ventana Inmediata con Debug.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'.

ABC
1 FormaCómoCuándo usarla
2Atajo de tecladoAlt + F11La más rápida; abre el editor en cualquier momento
3Pestaña DesarrolladorDesarrollador → Visual BasicVisual y fácil de encontrar; actívala en Archivo → Opciones → Personalizar cinta *
4Clic derecho en hojaClic derecho en pestaña de hoja → Ver códigoAbre 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.

AB
1 Zona del editorPara qué sirve
2Explorador de proyectos (izquierda)Lista todos los libros abiertos, hojas y módulos
3Ventana de código (centro)Aquí escribes el código VBA
4Ventana Inmediata (Ctrl + G)Muestra Debug.Print y permite ejecutar líneas sueltas
5Insert → 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:

Saludo.bas
VBA
1 Sub Saludo()
2 MsgBox "¡Hola desde VBA!"
3 End Sub

Debug.Print — la ventana Inmediata

Debug.Print envía texto a la ventana Inmediata sin interrumpir el programa. Ideal para inspeccionar valores:

MostrarInfo.bas
VBA
1 Sub MostrarInfo()
2 Dim nombre As String
3 nombre = "Excel"
4 Debug.Print "Curso de: " & nombre
5 Debug.Print "Año: " & 2024
6 End Sub

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.

  1. Abre Excel y pulsa Alt + F11 para abrir el editor VBA.
  2. Ve a Insert → Module para insertar un módulo estándar.
  3. Escribe la Sub Saludo() con MsgBox y ejecútala con F5.
  4. Prueba abrir el editor con la pestaña Desarrollador y con clic derecho en la pestaña de Hoja1.
  5. 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
Presentacion.bas
VBA
1 Sub Presentacion()
2 MsgBox "Mi nombre es: Ana García"
3 End Sub

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
Bienvenida.bas
VBA
1 Sub Bienvenida()
2 Dim nombre As String
3 nombre = "Carlos"
4 MsgBox "Hola, " & nombre & ". Bienvenido a VBA."
5 End Sub

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
CalculoIVA.bas
VBA
1 Sub CalculoIVA()
2 Debug.Print "IVA (19%): " & 250 * 0.19
3 End Sub

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
TresPasos.bas
VBA
1 Sub TresPasos()
2 MsgBox "Paso 1: Inicio"
3 MsgBox "Paso 2: Procesando..."
4 MsgBox "Paso 3: ¡Listo!"
5 End Sub

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
EscribirCelda.bas
VBA
1 Sub EscribirCelda()
2 Range("A1").Value = "¡VBA funciona!"
3 End Sub

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
SaludoInteractivo.bas
VBA
1 Sub SaludoInteractivo()
2 Dim nombre As String
3 nombre = InputBox("¿Cómo te llamas?")
4 MsgBox "¡Hola, " & nombre & "! Estás aprendiendo VBA."
5 End Sub

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
NombreLibro.bas
VBA
1 Sub NombreLibro()
2 MsgBox "El libro activo se llama: " & ThisWorkbook.Name
3 End Sub

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
ContarHojas.bas
VBA
1 Sub ContarHojas()
2 Debug.Print "Número de hojas: " & ThisWorkbook.Sheets.Count
3 End Sub

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
FechaActual.bas
VBA
1 Sub FechaActual()
2 Debug.Print "Ahora es: " & Now()
3 End Sub

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
LlenarCeldas.bas
VBA
1 Sub LlenarCeldas()
2 Range("A1").Value = "Ana García"
3 Range("B1").Value = 25
4 Range("C1").Value = "¡Aprendiendo VBA!"
5 End Sub

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
InfoSistema.bas
VBA
1 Sub InfoSistema()
2 MsgBox "Excel versión: " & Application.Version & Chr(13) & _
3 "Sistema: " & Application.OperatingSystem
4 End Sub

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
ProcesoCompleto.bas
VBA
1 Sub ProcesoCompleto()
2 MsgBox "Iniciando proceso..."
3 Range("A1").Value = "Proceso activo"
4 MsgBox "Proceso finalizado. Revisa A1."
5 End Sub

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
InfoCeldaActual.bas
VBA
1 Sub InfoCeldaActual()
2 MsgBox "Hoja: " & ActiveSheet.Name & Chr(13) & _
3 "Fila: " & ActiveCell.Row & Chr(13) & _
4 "Columna: " & ActiveCell.Column
5 End Sub

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.

Ver solución sugerida
Calculadora.bas
VBA
1 Sub Calculadora()
2 Dim num1 As Double
3 Dim num2 As Double
4 num1 = CDbl(InputBox("Ingresa el primer número:"))
5 num2 = CDbl(InputBox("Ingresa el segundo número:"))
6 MsgBox "La suma es: " & num1 + num2
7 End Sub

Pon a prueba tus conocimientos

Ko-fi
Donaciones
Apoyá cafeycodigo con un café en Ko-fi. Colaboradores: insignia, muro y zona exclusiva.