Las macros son procedimientos de VBA que ejecutan tareas repetitivas dentro de Excel. En este tutorial usarás el libro VentasAvanzado.xlsm para automatizar un informe, guardar totales, trabajar con varios libros y presentar controles al usuario. La guía funciona en Excel para Windows con VBA; no necesitas una versión concreta reciente, pero debes guardar el libro en formato .xlsm.
Qué son las macros y qué problemas resuelven
Una macro graba una secuencia de acciones de Excel y la reproduce cuando la ejecutas. En el libro VentasAvanzado.xlsm, una macro puede tomar las ventas registradas en la hoja Ventas, calcular el total, escribirlo en un resumen y avisar que la actualización terminó.
Esto evita repetir cinco pasos cada día, reduce errores de pulsación y permite concentrarse en revisar los datos. VBA también permite trabajar con varios libros, comprobar si una celda está vacía o pedir una categoría mediante un control.
La macro siguiente anticipa el resultado final del tutorial:
Sub ActualizarInforme()
Dim total As Double
total = WorksheetFunction.Sum(ThisWorkbook.Worksheets("Ventas").Range("B2:B5"))
ThisWorkbook.Worksheets("Resumen").Range("B2").Value = total
MsgBox "Informe actualizado"
End Sub
Dónde preparar Excel para crear macros
Primero crea un libro nuevo y guarda la hoja de ventas con datos. Después abre Archivo > Guardar como, elige Libro de Excel habilitado para macros y escribe VentasAvanzado.xlsm.
Para mostrar la pestaña Programador:
- Abre Archivo > Opciones.
- Selecciona Personalizar cinta de opciones.
- En la lista de la derecha, marca Programador.
- Pulsa Aceptar.
.xlsx no conserva macros; para este proyecto debes usar .xlsm.Las piezas del editor de Visual Basic
El editor de Visual Basic, abre con Alt+F11. A la izquierda aparece el panel Proyectos; dentro se ven los libros y sus componentes, como hojas y módulos. En el centro se escribe el código y en la parte inferior aparece la ventana Inmediato, útil para ejecutar instrucciones de prueba.
Para agregar código:
- En Proyecto (VBAProject), selecciona el proyecto del libro.
- Pulsa Insertar > Módulo.
- Escribe el procedimiento en el módulo.
| A | B | |
|---|---|---|
| 1 | Producto | Importe |
| 2 | Cuaderno | 1.250,00 |
| 3 | Bolígrafo | 45,50 |
| 4 | Cuaderno | 780,00 |
| 5 | Goma | 12,00 |
La grabadora de macros escribe tu primer VBA
La grabadora es la vía más rápida para conocer la estructura de un Sub. En la hoja Ventas, selecciona Programador > Grabar macro y completa el cuadro con el nombre PrimeraMacro.
- Acepta el cuadro.
- Escribe
Holaen la celda A1. - En Programador > Detener grabación, pulsa Detener grabación.
- Abre el editor con Alt+F11 y examina el módulo generado.
El código tendrá una forma parecida a esta:
Sub PrimeraMacro()
Range("A1").Select
ActiveCell.Value = "Hola"
End Sub
Range("A1").Select selecciona la celda; ActiveCell.Value = "Hola" escribe el texto. La acción real quedó grabada, aunque una macro editada puede describir el resultado sin seleccionar primero.
PrimeraMacro.Cómo escribir una macro con celdas y mensajes
Vamos a sustituir la grabación por código explícito. En el módulo, crea el procedimiento Saludo:
Sub Saludo()
Range("A1").Value = "Hola"
MsgBox "Listo"
End Sub
La primera línea asigna Hola a la celda A1. MsgBox "Listo" abre una ventana con el mensaje y un botón Aceptar. Después de aceptar, la macro termina.
Para ejecutarla:
- Coloca el cursor dentro de
Sub Saludo(). - Pulsa F5.
- Acepta el mensaje Listo.
Listo
| A | B | |
|---|---|---|
| 1 | Hola | |
| 2 | Cuaderno | 1.250,00 |
| 3 | Bolígrafo | 45,50 |
| 4 | Cuaderno | 780,00 |
| 5 | Goma | 12,00 |
Las variables guardan datos durante la macro
Una variable almacena un dato mientras la macro se ejecuta. Dim crea la variable y As Double indica queervo un número decimal.
En el módulo, escribe:
Sub CalcularTotal()
Dim importe As Double
Dim recargo As Double
Dim total As Double
importe = 1250
recargo = 150
total = importe + recargo
MsgBox "Total: " & total
End Sub
El signo & concatena el texto Total: con el valor numérico. Si cambias recargo = 150 por recargo = 200, el mensaje mostrará 1.450.
Total: 1400
CDbl("1250.50") o Val("1250,50") sobre una cadena.Trabajar con hojas y rangos sin escribir cada celda
En el libro actual, ThisWorkbook representa VentasAvanzado.xlsm. Worksheets("Ventas") selecciona la hoja Ventas y Range("A2:A5") delimita el rango que se recorrerá.
Sub TotalVentas()
Dim celda As Range
Dim total As Double
For Each celda In ThisWorkbook.Worksheets("Ventas").Range("A2:A5")
total = total + celda.Offset(0, 1).Value
Next celda
ThisWorkbook.Worksheets("Ventas").Range("D1").Value = "Total"
ThisWorkbook.Worksheets("Ventas").Range("D2").Value = total
MsgBox "Total registrado: " & Format(total, "#,##0.00")
End Sub
Offset(0, 1) desplaza la referencia una columna a la derecha: desde A2:B5 llega a B2:B5. La suma correcta es 1.250 + 45,50 + 780 + 12 = 2.087,50.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Producto | Importe | Total | |
| 2 | Cuaderno | 1.250,00 | 2.087,50 | |
| 3 | Bolígrafo | 45,50 | ||
| 4 | Cuaderno | 780,00 | ||
| 5 | Goma | 12,00 |
Abrir y guardar otro archivo desde VBA
Supón que el archivo Resumen.xlsx ya existe, con una hoja Resumen y la celda B2 vacía. La macro abre Ventas.xlsx, obtiene su total y lo escribe en el resumen.
Sub CopiarTotal()
Dim origen As Workbook
Dim destino As Workbook
Dim total As Double
Set origen = Workbooks.Open(ThisWorkbook.Path & "\Ventas.xlsx")
Set destino = Workbooks.Open(ThisWorkbook.Path & "\Resumen.xlsx")
total = WorksheetFunction.Sum(origen.Worksheets("Ventas").Range("B2:B5"))
destino.Worksheets("Resumen").Range("B2").Value = total
destino.Save
origen.Close SaveChanges:=False
destino.Close SaveChanges:=True
MsgBox "Total copiado: " & total
End Sub
origen y destino son objetos Workbook. Set es necesario para asignar objetos a variables. ThisWorkbook.Path obtiene la carpeta del libro habilitado para macros.
Total copiado: 2087,5
Crear mensajes y controles para elegir datos
Un MsgBox puede informar y, según sus argumentos, ofrecer botones como Sí, No, Cancelar o Reintentar. Sirve para pedir una decisión sencilla sin diseñar un formulario.
Para recibir una categoría, un control desplegable como ComboBox puede vincularse a una celda o alimentar un argumento. El código siguiente lee la categoría elegida en G2:
Sub ProcesarCategoria()
Dim categoria As String
categoria = ThisWorkbook.Worksheets("Resumen").Range("G2").Value
If categoria = "" Then
MsgBox "Elige una categoría", vbExclamation, "Falta información"
Exit Sub
End If
MsgBox "Procesando: " & categoria, vbInformation, "Categoría"
End Sub
En el editor de Visual Basic puedes insertar un control desde el Cuadro de herramientas y asignar su evento Change o un botón a un procedimiento. En la hoja, el usuario elige Papelería y la macro confirma esa selección.
Procesando: Papelería
Detener una macro cuando aparece un error
Una macro puede fallar si intenta operar con una celda vacía. La siguiente versión usa If para comprobar el dato antes de convertirlo en número:
Sub TotalSeguro()
Dim celda As Range
Dim total As Double
On Error GoTo ControlError
For Each celda In ThisWorkbook.Worksheets("Ventas").Range("B2:B5")
If IsEmpty(celda.Value) Or Not IsNumeric(celda.Value) Then
MsgBox "Hay un dato no numérico", vbExclamation, "Revisar ventas"
Exit Sub
End If
total = total + CDbl(celda.Value)
Next celda
ThisWorkbook.Worksheets("Ventas").Range("D2").Value = total
MsgBox "Total correcto: " & total
Exit Sub
ControlError:
MsgBox "No se pudo completar el total", vbCritical, "Error controlado"
End Sub
Sin la comprobación, Excel mostraría una alerta inesperada al ejecutar CDbl sobre una celda vacía. On Error GoTo ControlError permite interceptar el fallo y mostrar un mensaje propio.
Total correcto: 2087,5
Por qué una macro no aparece o no se ejecuta
Revisa estos puntos:
- La pestaña Programador no está visible. Actívala en Archivo > Opciones > Personalizar cinta de opciones. La grabadora también puede abrirse desde Vista > Macros.
- El archivo es
.xlsx. Un libro normal no conserva macros; guárdalo como Libro de Excel habilitado para macros (.xlsm). - La macro descargada está bloqueada. Los archivos recibidos de internet pueden permanecer bloqueados hasta que los habilites en Archivo > Propiedades después de revisar su origen.
- El código no está dentro de un Sub ejecutable. Debe tener una estructura como
Sub Nombre()y terminar conEnd Sub. - Falta una referencia o una instrucción. Revisa las opciones del compilador en el editor y vuelve a ejecutar con Alt+F8 para elegir la macro.
- El código intenta modificar un libro protegido o solo de lectura. Cierra esos archivos o quita la protección antes de automatizar cambios.
Para comprobar una macro, abre el cuadro con Alt+F8, selecciona su nombre y pulsa Ejecutar. Si aparece en la lista pero falla al ejecutarse, el problema está en el código o en los datos, no en la disponibilidad de la pestaña.
Cuándo usar VBA y cuándo evitar las macros
La herramienta depende de si necesitas cálculo, análisis o una secuencia automatizada. Una fórmula se Actualiza con los datos; una macro ejecuta acciones y puede organizar el proceso completo.
| Necesidad | Herramienta recomendada | Ventaja | Consideración |
|---|---|---|---|
| Calcular un total por celda | Fórmula | Simple y visible en la barra de fórmulas | Debe copiarse o requiere una tabla |
| Consultar y analizar registros | Tabla de Excel | Filtros, formato y referencias estructuradas | No abre ni guarda archivos por sí sola |
| Recopilar, actualizar y preparar archivos | Macro VBA | Repite el proceso completo | Requiere un libro .xlsm y pruebas |
| Pedir datos mediante un formulario | Macro con controles | Presenta opciones al usuario | Añade mantenimiento al código |
En VentasAvanzado.xlsm, una fórmula basta para sumar B2:B5. La macro resulta útil cuando además debes abrir Ventas.xlsx, escribir el resultado en Resumen.xlsx, cerrar ambos y avisar al usuario.
.xlsx tampoco conserva macros, y Excel para Mac usa Cmd donde Windows usa Ctrl en muchos atajos.Claves para trabajar con macros en Excel
- Guarda el libro como
.xlsmantes de crear una macro. - Activa Programador desde Archivo > Opciones > Personalizar cinta de opciones.
- Usa Alt+F11 para abrir el editor y F5 para ejecutar el procedimiento activo.
- Identifica el libro con
ThisWorkbook, la hoja conWorksheets("Ventas")y el rango conRange("A2:A5"). - Comprueba los datos antes de convertirlos con
IsEmptyeIsNumeric. - Cierra los libros abiertos y guarda solo los cambios necesarios.
- Prueba las macros con libros y datos de trabajo antes de usarlas en el proceso definitivo.
- Consulta la documentación oficial de VBA en Office y los formatos de archivo compatibles con Excel.
El siguiente paso es tomar tu proceso repetitivo, escribir sus pasos en una hoja y convertir esa secuencia en tu primera macro ejecutable.
Dudas al aprender macros y VBA en Excel
1. ¿Qué se aprende en un curso de Excel avanzado con macros?
Se aprende a automatizar tareas repetitivas mediante VBA, trabajar con celdas, hojas y libros, mostrar mensajes y gestionar errores. En la práctica, el curso puede usar un informe de ventas para crear una macro que actualice totales y prepare un resumen.
2. ¿Qué distingue un curso de Excel avanzado de uno intermedio?
El nivel intermedio se concentra en fórmulas, tablas y análisis de datos. El avanzado incorpora el editor de Visual Basic, macros, variables, controles y apertura de otros libros para resolver procesos que no conviene repetir manualmente.
3. ¿Necesito conocimientos de programación para aprender macros de Excel?
No es imprescindible conocer programación. La grabadora de macros permite crear un primer procedimiento observando sus acciones; después, el editor de Visual Basic sirve para entender y modificar el código generado.
4. ¿Puedo pasar de un curso de Excel intermedio a uno avanzado?
Sí, conviene dominar antes las fórmulas, el uso de rangos, las tablas y las operaciones básicas de una hoja. Ese conocimiento facilita comprender qué celdas, libros y rangos está manipulando cada línea de VBA.
5. ¿Qué significa UPS en un curso de Excel?
UPS puede referirse a un proveedor o centro de formación, pero la abreviatura no identifica por sí sola un curso concreto. Para saber si ofrece formación avanzada en macros, revisa su temario, el tipo de entrega, las versiones de Excel y si incluye prácticas con VBA.
6. ¿Qué universidades ofrecen cursos de Excel?
La disponibilidad depende de la universidad, su calendario y su oferta de formación continua. Consulta el portal institucional o la dirección de educación continua y verifica que el programa incluya Excel avanzado, VBA y ejercicios prácticos.
7. ¿Qué distingue un diplomado de Excel de un curso?
Un curso se centra en una formación concreta y puede dure menos. Un diplomado suele organizar varias áreas, módulos y criterios de evaluación; por eso hay que comparar contenidos, horas, modalidad y requisitos antes de elegirlo.
8. ¿Cómo se comprueba que un curso de Excel está certificado?
Comprueba quién imparte el programa, qué título recibe el participante, cuáles son los requisitos y cómo se documenta la finalización. También verifica que la práctica incluya macros, el editor de Visual Basic y un proyecto aplicado a tu trabajo.
Fuentes
- MicrosoftEl editor de VBA y la primera macro — documentación oficialconsultado el 27/10/2026
- MicrosoftAtajos que funcionan igual en cualquier idioma — documentación oficialconsultado el 27/10/2026
- MicrosoftFormatos de archivo de Excel — documentación oficialconsultado el 27/10/2026