Contactos

Curso de VBA en Excel: cómo empezar a programar macros

octubre 26, 2026 Tuto Excel 16 min read
Curso de VBA en Excel: cómo empezar a programar macros

Un curso de VBA te enseña a grabar y escribir macros para automatizar en Excel lo que haces a mano cada semana: formatear una hoja, rellenar columnas, copiar datos entre libros o avisar al usuario con un mensaje. Al terminar, sabrás activar la pestaña Programador, abrir el editor con Alt+F11, grabar tu primera macro y leer el código que escribe la grabadora; todo sobre una hoja de gastos realista. Funciona en Excel para Microsoft 365, 2024, 2021, 2019, 2016 y 2013, y en Excel para Mac; en Excel para la web no se puede usar VBA.

Por qué aprender VBA en Excel y cuándo merece la pena

Si todos los lunes abres el mismo informe, le das el mismo formato, le pones los mismos totales y lo envías, VBA vale para ti. Una macro hace ese trabajo en un segundo y sin que se te olvide una coma. La grabadora convierte cada clic en una línea de código, así que empiezas a programar sin darte cuenta: ves qué nombre tiene cada cosa y luego lo escribes tú a mano.

Hay tareas donde VBA se luce: formatear muchas filas con la misma regla, mover datos entre libros, abrir varios archivos y resumirlos, crear un botón que prepare un informe, avisar al usuario con un cuadro de diálogo o recorrer una hoja y dejar un aviso en cada fila que falla.

Hay otras donde VBA sobra. Una tabla dinámica, una consulta de Power Query o un formato condicional llegan antes, se mantienen mejor y los entiende alguien que no ha programado. Si lo que quieres es solo resumir datos, empieza por ahí; VBA es el paso siguiente, cuando las herramientas estándar se quedan cortas.

Lo que VBA hace bien y lo que ya hace Excel solo

VBA automatiza lo repetido: lo que haces a mano cien veces al día. Formatear una columna, copiar un rango entre hojas, abrir otro libro, escribir en una celda y guardar. También crea avisos con MsgBox y mueve datos entre Excel, Word, Outlook y Access.

Lo que Excel ya hace solo: totales con SUBTOTALES, resúmenes con tablas dinámicas, combinaciones con Power Query, avisos visuales con formato condicional y listas desplegables con Validación de datos. Antes de escribir una macro, mira si la herramienta estándar te lo da en dos clics; si no, VBA es la respuesta.

Qué necesitas para seguir un curso de VBA en Excel

Necesitas Excel instalado en el ordenador: VBA no funciona en Excel para la web. Cualquier versión de escritorio desde 2007 trae el editor; las más recientes (Microsoft 365, 2024, 2021) añaden herramientas que lo hacen más cómodo, como el IntelliSense al escribir. El archivo donde guardes macros tiene extensión .xlsm, porque un .xlsx no las guarda.

Vas a usar mucho la pestaña Programador. Viene oculta por defecto y se activa en Archivo > Opciones > Personalizar cinta de opciones. Allí la marcas y aparece al lado de Vista, con los botones Grabar macro, Insertar y Editor de Visual Basic. La macro más pequeña del mundo, la que escribe "Hola" en la celda A1, ya la entiende el editor.

Activar la pestaña Programador y abrir el editor

  1. Abre Excel y ve a Archivo > Opciones.
  2. En la ventana, pulsa Personalizar cinta de opciones.
  3. En la columna de la derecha, Pestañas principales, marca la casilla Programador.
  4. Pulsa Aceptar; la pestaña aparece al final de la cinta.
  5. Pulsa Alt+F11 para abrir el editor de Visual Basic. La próxima vez que lo necesites, el atajo es el mismo.
ArchivoOpcionesPersonalizar cinta de opciones
Nota: La pestaña Programador viene oculta por defecto en todas las versiones. Activarla es un cambio local, del Excel que tienes abierto; no afecta a otros usuarios ni a otros libros.

El libro .xlsm, las macros y la seguridad

Un libro con macros se guarda como .xlsm (Libro de Excel habilitado para macros). Si lo guardas como .xlsx y luego lo cierras, las macros se pierden sin avisar. Cuando lo guardes por primera vez, te aparecerá un aviso: "Las características siguientes no se pueden guardar en libros sin macros". Pulsa No y elige Libro de Excel habilitado para macros.

Al abrir un .xlsm bajado de internet, Excel muestra el aviso amarillo "RIESGO DE SEGURIDAD: las macros se han deshabilitado". Para usarlas, pulsa Habilitar contenido. Si el archivo está en una carpeta de confianza, el aviso no sale.

  1. Archivo > Guardar como.
  2. Elige la carpeta y, en Tipo, Libro de Excel habilitado para macros (.xlsm).
  3. Pulsa Guardar y, si pregunta, confirma que quieres mantener el formato con macros.
Cuidado: No actives macros de un archivo que no conozcas. Una macro puede borrar archivos, leer datos de otros libros o enviar correos; recibe código solo de fuentes de confianza.

Cómo es un curso de VBA bien armado

Un curso que se toma en serio VBA recorre estos cuatro tramos, en este orden:

  • El entorno y la grabadora. Abrir el editor, ver dónde se escribe, grabar la primera macro, leer el código que genera la grabadora y entender qué hace cada línea.
  • Los objetos básicos. La jerarquía Application > Workbook > Worksheet > Range, las propiedades .Value y .Formula, y las dos formas de escribir una celda: Range("A1") por dirección y Cells(1, 1) por números.
  • Bucles y condicionales. For...Next para repetir, If...Then...Else para decidir y Do...Loop para repetir hasta que pase algo. Aquí la macro deja de ser lineal.
  • Formularios y errores. Un UserForm con campos y botones para que el usuario introduzca datos, y On Error para que la macro no se caiga cuando algo falla.

Un buen curso te deja practicar sobre un libro que crece contigo, no sobre ejemplos sueltos. Así, cuando terminas, tienes una herramienta que de verdad usas en tu trabajo.

El editor de VBA y la grabadora de macros

Para grabar la macro "Saludo" y ver el código que escribe la grabadora:

  1. En la pestaña Programador, pulsa Grabar macro.
  2. Escribe Saludo en Nombre de la macro y deja "Este libro" en Guardar macro en.
  3. Pulsa Aceptar; todo lo que hagas queda registrado.
  4. Selecciona la celda A1, escribe Hola y pulsa Entrar.
  5. Vuelve a Programador y pulsa Detener grabación.
  6. Abre el editor con Alt+F11. En la izquierda, dentro de Módulos, está Módulo1 con este código:

Sub Saludo()
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "Hola"
End Sub

La línea que escribe la palabra es ActiveCell.FormulaR1C1 = "Hola". La grabadora la envuelve con Select y ActiveCell porque tú hiciste clic en A1 antes de escribir. Si pulsas F5, el editor ejecuta la macro y A1 vuelve a contener "Hola".

Consejo: Pulsa F1 con el cursor sobre FormulaR1C1 y se abre la ayuda del modelo de objetos, en español, con ejemplos. Es la mejor forma de entender qué hace cada palabra.

Objetos de Excel: Application, Workbook, Worksheet y Range

Objeto Qué es Ejemplo
Application El propio Excel Application.ScreenUpdating = False
Workbook Un libro abierto Workbooks("Gastos.xlsx")
Worksheet Una hoja del libro Worksheets("Enero")
Range Un rango de celdas Range("A1:C10")
Cells Una celda por números Cells(2, 3) (fila 2, columna 3 = C2)

Range usa la dirección tal como la escribes en la hoja; Cells usa números. Con Range es más fácil leer el código; con Cells es más fácil hacer bucles, porque Cells(i, 4) cambia con la variable i.

Sub AbrirHoja()
    Workbooks("Gastos.xlsx").Worksheets("Gastos"). _
        Range("A1").Value = "Fecha"
End Sub

La jerarquía se lee de arriba abajo: del libro, a la hoja, al rango. Para leer o escribir, usas .Value (el valor visto) o .Formula (la fórmula en inglés).

Escribir fórmulas desde VBA: Formula, FormulaR1C1 y las versiones Local

Para escribir una fórmula desde VBA hay cuatro propiedades. Las dos que importan al empezar:

  • .Formula: la fórmula en inglés y con coma como separador, sea cual sea el idioma de tu Excel. Es la más segura.
  • .FormulaLocal: la fórmula en el idioma y con el separador de tu Excel (punto y coma si tu Excel está en español).

Las otras dos, .FormulaR1C1 y .FormulaR1C1Local, usan el estilo de referencia R1C1 (fila 2, columna 3, sin letra), útil para escribir la misma fórmula en muchas filas.

=SUM(A2:B2)

Sub TotalPorFila()
    Range("D2:D10").FormulaR1C1 = "=RC[-2]*RC[-1]"
End Sub

RC[-2] significa "dos columnas a la izquierda de la celda actual"; al copiar la fórmula a D2 queda =B2C2, en D3 queda =B3C3, y así hasta D10. Una sola línea escribe las nueve multiplicaciones.

Nota: En Excel configurado con punto decimal (México, Estados Unidos), el separador de argumentos es la coma; en España y la mayoría de países de habla hispana, es el punto y coma. Las fórmulas escritas con .Formula siempre usan coma.

Practica tu primera macro grabada en una hoja de gastos

Vas a crear el libro Gastos, con la fecha en A, el concepto en B y el importe en C. Después grabarás una macro que pone el importe en negrita y le aplica formato moneda.

A1fx**Fecha**
A B C
1 Fecha Concepto Importe
2 01/03/2026 Material de oficina 45,20
3 02/03/2026 Comida cliente 32,50
4 03/03/2026 Transporte 18,00
5 04/03/2026 Suministros 92,15
6 05/03/2026 Material de oficina 27,80
7 06/03/2026 Comida equipo 64,00
Gastos

Grabar la macro paso a paso

  1. Abre un libro nuevo y guárdalo como Gastos.xlsm.
  2. Escribe los encabezados y los datos de la hoja anterior.
  3. Ve a Programador > Grabar macro. Nombre: FormatoImporte. Guardar en: Este libro.
  4. Pulsa Aceptar.
  5. Selecciona C2:C7 con el ratón.
  6. En Inicio > Fuente, pulsa Negrita (Ctrl+N).
  7. Pulsa Ctrl+1 para abrir Formato de celdas. En la pestaña Número, elige Moneda, con 2 decimales y símbolo €. Pulsa Aceptar.
  8. Vuelve a Programador y pulsa Detener grabación.
  9. Guarda el libro con Ctrl+G.
ProgramadorGrabar macro
Comprueba: Los importes de C2:C7 aparecen en negrita y con formato moneda (45,20 €, 32,50 €…). La macro está guardada en el Módulo1 del editor, con el nombre FormatoImporte.

Leer el código que escribió la grabadora

Abre el editor con Alt+F11 y despliega Módulos > Módulo1. Verás algo así:

Sub FormatoImporte()
    Range("C2:C7").Select
    Selection.Font.Bold = True
    Selection.NumberFormat = "#,##0.00 €"
End Sub

La primera línea es la selección que hiciste con el ratón. La segunda aplica la negrita a la selección. La tercera pone el formato moneda. Las líneas en verde con un apóstrofe delante son comentarios que VBA ignora al ejecutar.

Cada vez que añadas una fila, selecciónala y ejecuta la macro con Alt+F8 para que se formatee igual que el resto. La próxima práctica la cambiaremos para que lo haga sola.

Practica una macro escrita a mano que recorre una hoja

Ahora la hoja tiene una columna más: el IVA en E2, con 0,21. La macro recorre las filas, multiplica el importe de C por 1 + el IVA de E2 y deja el resultado en D. Con Application.ScreenUpdating = False, la pantalla no parpadea mientras corre.

E2fx0,21
A B C D E
1 Fecha Concepto Importe Total con IVA IVA
2 01/03/2026 Material de oficina 45,20 54,69 0,21
3 02/03/2026 Comida cliente 32,50 39,33
4 03/03/2026 Transporte 18,00 21,78
5 04/03/2026 Suministros 92,15 111,50
6 05/03/2026 Material de oficina 27,80 33,64
7 06/03/2026 Comida equipo 64,00 77,44
Gastos

El Sub que escribe en D2:D10 con Cells y un bucle For

Sub TotalConIVA()
    Dim i As Long
    Application.ScreenUpdating = False
    For i = 2 To 7
        Cells(i, 4).Value = Cells(i, 3).Value * (1 + Range("E2").Value)
    Next i
    Application.ScreenUpdating = True
End Sub

Pulsa F5 con el cursor dentro del Sub. La columna D se rellena con los totales con IVA, calculados sobre 0,21 de E2.

54,69
39,33
21,78
111,50
33,64
77,44
Comprueba: D2 contiene 54,69 (=45,20 * 1,21); D3 contiene 39,33; así hasta D7 con 77,44. Si la pantalla no se actualiza al volver a Excel, es por el ScreenUpdating; ponlo a True al final o ejecuta otra macro que lo restaure.

Cambiar la macro para que use una referencia absoluta de celda

El número 1,21 está metido a mano en el código. Si el IVA cambia, hay que tocar la macro. Mejor leerlo de E2 con la referencia bien escrita y, en la fórmula pensada para la hoja, fijarla con F4 para que no se mueva al arrastrar.

=C2*(1+$E$2)

Sub TotalConIVA()
    Dim i As Long
    Application.ScreenUpdating = False
    For i = 2 To 7
        Cells(i, 4).Value = Cells(i, 3).Value * (1 + Range("E2").Value)
    Next i
    Application.ScreenUpdating = True
End Sub

Pulsa F5, cambia E2 a 0,10 y vuelve a ejecutar. La columna D se recalcula con el nuevo IVA sin tocar la macro.

Consejo: Para escribir la fórmula en D2 a mano en la hoja y arrastrarla después, primero escribe =C2*(1+E2) y, antes de arrastrar, pon el cursor sobre E2 y pulsa F4 tres veces para dejar $E2 (columna fija, fila libre) o cuatro veces para $E$2 (ambas fijas). Si arrastras hacia abajo, la fila debe quedar fija con E$2.

Errores típicos de quien empieza con VBA en Excel

Las macros nuevas fallan. La mayoría de las veces, el error te dice qué pasa si sabes leerlo. Los tres avisos que más te van a salir, y cómo arreglarlos.

Error 1004 al asignar la fórmula: el idioma y el separador

El mensaje literal: "Se ha producido el error '1004' en tiempo de ejecución: Error definido por la aplicación o por el objeto". Suele salir al asignar la fórmula y significa que VBA no entiende lo que has escrito.

La causa: escribiste la fórmula en español o con punto y coma en una propiedad que solo entiende inglés con coma.

Range("D2").Formula = "=SUMA(A2:B2)"

El arreglo: pasar la función a inglés y la coma como separador.

Range("D2").Formula = "=SUM(A2:B2)"

Si prefieres escribir la fórmula como la ves en tu Excel, usa .FormulaLocal y deja el punto y coma.

Range("D2").FormulaLocal = "=SUMA(A2:B2)"

La macro hace lo mismo en todas las filas: la referencia no se movió

La causa: pegaste Range("C2").FormulaR1C1 = "=RC[-1]*$E$2" y la fórmula queda fija en C2; el resto de filas no se actualiza porque la referencia que debería moverse no es relativa, o porque RC[-1] apunta a la columna equivocada.

El arreglo: revisa que la fórmula use RC[-1] (una columna a la izquierda) y que $E$2 esté en formato R1C1 correcto: R2C5. Si la escribes como $E$2, VBA no la entiende. Lo correcto, todo en estilo R1C1:

Range("D2:D7").FormulaR1C1 = "=RC[-1]*(1+R2C5)"

En la barra de fórmulas, después de escribir la fórmula en la celda, pon el cursor sobre la referencia y pulsa F4 para alternar entre A1, $A$1, A$1 y $A1 hasta dar con la combinación que se queda fija al arrastrar.

Las macros se perdieron al guardar: era un .xlsx

La causa: guardaste el libro como Libro de Excel (.xlsx) en vez de como Libro habilitado para macros (.xlsm). Excel no avisa con un error; al cerrar, las macros se borran sin más.

El arreglo: guardar de nuevo como .xlsm y volver a abrirlo.

  1. Archivo > Guardar como.
  2. En Tipo, elige Libro de Excel habilitado para macros (.xlsm).
  3. Pulsa Guardar y, si pregunta, confirma que quieres mantener el formato con macros.

Al abrir un .xlsm bajado de internet, Excel muestra la barra amarilla "RIESGO DE SEGURIDAD: las macros se han deshabilitado". Para activarlas, pulsa Habilitar contenido en esa barra.

Nota: Si trabajas siempre con los mismos archivos, añade su carpeta a Ubicaciones de confianza (Archivo > Opciones > Centro de confianza > Ubicaciones de confianza) y el aviso no saldrá nunca más.

Lo que ya sabes hacer con VBA en Excel y tu siguiente paso

  • Ya conoces el editor de VBA y abres módulos con Alt+F11.
  • Ya sabes grabar una macro y leer el código que escribe la grabadora.
  • Ya recorres la jerarquía Application, Workbook, Worksheet y Range, y lees celdas con Range y Cells.
  • Ya escribes fórmulas desde VBA con .Formula, .FormulaR1C1 y sus versiones .Local.
  • Ya guardas el libro como .xlsm y desbloqueas las macros de archivos descargados.

El siguiente paso razonable depende de lo que te frene en tu trabajo. Si lo que necesitas es que el usuario introduzca datos limpios, salta a los UserForm: formularios con campos y botones que llaman a macros. Si lo que necesitas es combinar muchos archivos y limpiarlos, salta a Power Query: hace eso mejor que VBA y mantiene los pasos guardados. Un curso que se precie te lleva a uno de los dos, según el problema.

Datos comprobados en octubre de 2026.

Dudas al empezar un curso de VBA en Excel

1. ¿Hay un curso de VBA para Excel en PDF?

Microsoft no publica un manual oficial de VBA en PDF, pero sí tienes la referencia completa del lenguaje en learn.microsoft.com, que puedes guardar como PDF desde el navegador (Imprimir > Guardar como PDF). Para aprender desde cero, lo más práctico es combinar esa referencia con ejercicios cortos en el Editor de Visual Basic (Alt+F11) hasta que cada concepto se vuelva un hábito.

2. ¿Dónde consigo una lista de códigos VBA para Excel en PDF?

No existe un PDF oficial con todos los códigos; la referencia de VBA está en learn.microsoft.com/es-es/office/vba y se actualiza con cada versión. Lo útil es crearte tu propio repertorio: cada vez que resuelvas algo, guarda el procedimiento en un módulo PERSONAL.XLSB con un comentario al inicio explicando para qué sirve.

3. ¿Se puede hacer un curso de VBA para Excel gratis?

Sí, y sin pagar nada. El curso básico está en la propia ayuda de Microsoft (learn.microsoft.com) y la pestaña Programador trae el botón Grabar macro, que convierte tus acciones en código para que veas cómo se escribe. Luego conviene practicar modificando esas macros grabadas: es la forma más rápida de pasar de «ver código» a «entenderlo».

4. ¿Cómo descargo VBA para Excel?

No hay que descargarlo: VBA viene integrado en Excel de escritorio. Lo activas en Archivo > Opciones > Personalizar cinta de opciones y marcas la pestaña Programador; al pulsar Aceptar aparece esa pestaña con el botón Visual Basic. Eso sí, Excel para la web y Excel para Mac del App Store no ejecutan macros VBA, solo el de escritorio de Windows o Mac.

5. ¿Qué tiene el manual completo de macros VBA para Excel de 737 hojas?

No conozco ningún manual oficial con ese número exacto; las referencias de Microsoft (Excel VBA reference y Office VBA reference) suman varios miles de páginas en total. Un PDF con 737 hojas sería material de terceros, no de Microsoft, así que antes de descargarlo conviene comprobar autoría y fecha: VBA cambia poco entre versiones, pero la parte de objetos como TableObject o ListObject se renueva con cada versión.

6. ¿Qué es VBA?

VBA son las siglas de Visual Basic for Applications, el lenguaje de programación que lleva Excel desde los años 90 para automatizar tareas con macros. Tú escribes el código en el Editor de Visual Basic (Alt+F11) y Excel lo ejecuta: copiar datos, dar formato, crear tablas dinámicas, todo lo que haces a mano se puede convertir en un procedimiento que se lanza con un botón o un atajo.

7. ¿Dónde encuentro ejemplos de VBA en Excel?

Los ejemplos más fiables están en learn.microsoft.com, en Office VBA reference, filtrando por Excel: hay desde grabar una macro hasta recorrer celdas con bucles For Each. Otra fuente útil es el grabador de macros (Programador > Grabar macro): haz la tarea, detén la grabación y mira el código generado, que ya te muestra los objetos y propiedades reales de tu libro.

8. ¿Qué tipos de datos tiene VBA?

Los tipos básicos son Integer y Long para enteros, Double para decimales, String para texto, Boolean para verdadero/falso, Date para fechas y Variant cuando no quieres declarar el tipo. Se declaran con Dim al inicio del procedimiento, por ejemplo Dim contador As Long, y elegir bien el tipo ahorra memoria y evita errores de redondeo en operaciones con muchos datos.

Fuentes

  1. MicrosoftLAMBDA — documentación oficialconsultado el 07/10/2026
  2. MicrosoftRange.Formula, FormulaLocal, FormulaR1C1 y FormulaR1C1Local — documentación oficialconsultado el 07/10/2026
  3. MicrosoftEl editor de VBA y la primera macro — documentación oficialconsultado el 07/10/2026
  4. MicrosoftReferencias relativas, absolutas y mixtas — documentación oficialconsultado el 07/10/2026
  5. MicrosoftAtajos que funcionan igual en cualquier idioma — documentación oficialconsultado el 07/10/2026