PDF

Editor de VBA en Excel: qué es y cómo usarlo para escribir macros

noviembre 4, 2026 Tuto Excel 15 min read
Editor de VBA en Excel: qué es y cómo usarlo para escribir macros

Cuando tienes que repetir la misma tarea en Excel una y otra vez —ordenar datos, calcular totales, dar formato, guardar una copia—, las hojas van lentas y los clics no escalan. El editor de Visual Basic para Aplicaciones (VBA) es el «taller» dentro de Excel donde se escribe código que automatiza esos pasos. Al terminar este tutorial vas a saber abrir el editor con Alt+F11, escribir tu primera macro, recorrer una hoja con un bucle y guardar el archivo correctamente. Funciona en Excel para Microsoft 365, 2024, 2021, 2019 y 2016; en Excel para la web no se ejecuta VBA (allí se automatiza con Scripts de Office)

Por qué VBA sigue vivo y cuándo es la mejor opción

Excel trae estilos, tablas dinámicas, validaciones, BUSCARX (en inglés XLOOKUP, función desde Excel 2021) y Power Query (Datos > Obtener y transformar). Pero todas esas herramientas esperan que alguien haga clic en el orden correcto cada vez. VBA existe para lo que esas herramientas no cubren: acciones repetitivas que cambian con los datos.

Piénsalo así: tienes una hoja Ventas que cada lunes debe ordenar por importe, calcular totales por vendedor y guardar una copia en la carpeta Archivo. Hacerlo a mano lleva diez minutos y un fallo a la semana estropea el informe. Con una macro son menos de dos segundos. La macro no sustituye el trabajo de Excel: lo activa, lo lanza y lo repite sin errores.

VBA vive en los archivos .xlsm, está integrado en Excel desde 1993 y sigue siendo la forma más rápida de automatizar un libro concreto. Cuando el problema es general —combinar 30 archivos de una carpeta— usa Power Query o Scripts de Office en Excel para la web; cuando el problema es tuyo, de tu hoja, VBA lo resuelve.

Activar la pestaña Desarrollador y abrir el editor de VBA

Por defecto la pestaña Desarrollador está oculta. Hay que mostrarla una sola vez; a partir de ahí se queda.

  1. Abre Excel y ve a Archivo > Opciones.
  2. En la ventana que se abre, elige Personalizar cinta de opciones.
  3. A la derecha, en Pestañas principales, marca la casilla Desarrollador.
  4. Pulsa Aceptar; la pestaña Desarrollador aparece al final de la cinta.
ArchivoOpcionesPersonalizar cinta de opciones
Nota: en Office 2007 la ruta es Botón de Office > Opciones de Excel > Popular > Mostrar ficha Desarrollador en la cinta.

Con la pestaña visible ya puedes abrir el editor. Hay dos atajos: Alt+F8 abre la lista de macros para ejecutar una existente, y Alt+F11 abre el editor completo para escribir código. El resto del tutorial trabaja dentro del editor abierto con Alt+F11.

Las cuatro ventanas del editor y para qué sirve cada una

Al entrar con Alt+F11 verás una ventana con paneles a la izquierda y un área grande a la derecha. Son cuatro vistas que se abren y se cierran desde el menú Ver.

El Explorador de proyectos es el árbol con el libro, sus hojas y los módulos. La ventana de Código es donde se escribe el Sub. La ventana Inmediato sirve para probar una instrucción suelta: escribes ?ActiveSheet.Name y al pulsar Entrar ves el nombre de la hoja activa. La ventana Propiedades cambia ajustes del módulo o de la hoja (como Visible, que admite -1 - xlSheetVisible, -2 - xlSheetHidden y -3 - xlVeryHidden, que la esconde hasta desde el menú).

Los botones de la barra del editor que más se usan

Debajo del menú hay una pequeña barra con cinco botones que vas a usar todo el rato.

Sus teclas equivalentes: Ejecutar Sub es F5, Paso a paso es F8 (ejecuta una línea y se detiene, perfecto para ver cómo avanza el código), Restablecer detiene la ejecución, Ver Microsoft Excel te devuelve al Excel normal, Guardar se hace con Ctrl+G y el cuadrado de color es el punto de interrupción (clic en el margen gris junto a una línea para que VBA se detenga allí al ejecutar).

Cuidado: Ctrl+G en el editor de VBA abre la ventana Inmediato, no guarda. Para guardar el módulo pulsa el botón Guardar de la barra o Ctrl+S con la ventana de Código enfocada.

Los objetos básicos del modelo de Excel y cómo se escriben

Excel es un árbol de objetos que VBA recorre desde fuera hacia dentro: Application es Excel; Workbooks son los libros abiertos; Worksheets son las hojas de un libro; Range y Cells apuntan a celdas concretas. Se accede con punto, de mayor a menor: Application.ActiveWorkbook.Worksheets("Ventas").Range("D2").Value. En la práctica casi siempre se empieza por la hoja y se sube si hace falta.

Para escribir un valor se usa .Value: Range("A1").Value = "Hola". Para escribir una fórmula, dos opciones: .Formula (nombres de función en INGLÉS y comas como separador, da igual el idioma del Excel) y .FormulaLocal (nombres en el idioma del usuario y separador local, en español punto y coma).

Range("C2").Formula = "=SUM(A2:B2)"
Range("C2").FormulaLocal = "=SUMA(A2:B2)"

Las dos líneas escriben la misma fórmula en C2, pero la primera funcionará en cualquier Excel del mundo y la segunda solo en uno configurado en español con coma decimal. La pareja paralela con referencias R1C1 es .FormulaR1C1 y .FormulaR1C1Local; la documentación oficial de FormulaR1C1 explica las cuatro variantes.

Cuatro propiedades para escribir una fórmula desde VBA

La regla es simple: .Formula y .FormulaR1C1 usan SIEMPRE inglés y comas; .FormulaLocal y .FormulaR1C1Local usan el idioma del Excel. Mezclar idioma y separador produce el error 1004.

Propiedad Idioma de la fórmula Separador Referencias
.Formula inglés (SUM, VLOOKUP, IF) coma (,) A1
.FormulaLocal el del usuario (SUMA, BUSCARV, SI) el local (; en español) A1
.FormulaR1C1 inglés coma R1C1
.FormulaR1C1Local el del usuario el local R1C1

Cuando una fórmula debe copiarse a varias celdas y la referencia debe moverse fila a fila, R1C1 simplifica el código: Range("D2:D10").FormulaR1C1 = "=RC[-2]*RC[-1]" pone en cada celda de D2:D10 la multiplicación de las dos celdas a su izquierda.

Escribir tu primera macro a mano y ejecutarla

Empezamos con el libro HolaMundo.xlsx, una hoja nueva y la celda A1 vacía.

A1fx=
A
1
Hoja1

Pasos en el editor:

  1. Con el libro abierto, pulsa Alt+F11 para abrir el editor.
  2. En el menú Insertar > Módulo se crea un módulo nuevo en blanco.
  3. Escribe el siguiente código en el panel grande:

Sub Saludo()
    Range("A1").Value = "Hola"
    MsgBox "Listo"
End Sub
  1. Pulsa F5 (o el botón ▶ Ejecutar Sub). Aparece el mensaje «Listo»; al cerrarlo, A1 contiene «Hola».

Para verlo paso a paso pon el cursor dentro del Sub y pulsa F8 tres veces: la primera parada es la línea del Range, la segunda es la del MsgBox, la tercera es End Sub. Si te equivocas, F5 ejecuta de golpe y Restablecer detiene la ejecución.

Comprueba: A1 debe decir «Hola» y la macro debe haber tardado menos de un segundo.

Cambiar de la grabadora al editor: el código que Excel escribió por ti

La grabadora vive en Desarrollador > Grabar macro. Útil para descubrir el nombre exacto de un objeto: lo haces con el ratón, paras la grabación y abres Alt+F8 > Modificar para ver el código que la grabadora escribió.

B1fx="Hello World"
A B
1 Hello World
Hoja1

El código que suele aparecer para una acción tan simple es este:

Sub Macro1()
' Macro1 Macro
' Acceso directo: Ctrl+Mayús+H
    Range("B1").FormulaR1C1 = "=""Hello World"""
    Range("B1").Select
End Sub

Las líneas que empiezan con apóstrofo verde son comentarios: VBA las ignora al ejecutar, solo documentan. La grabadora usa referencias R1C1 y duplica las comillas internas con "": una dentro de la fórmula para que Excel las vea como texto.

Grabar con la grabadora frente a escribir el Sub a mano

La grabadora es buena para un primer vistazo, pero mete Select, Activate y movimientos de cursor que la macro no necesita y que ralentizan. Para la misma tarea de poner «Hola» en A1, el Sub escrito a mano (Range("A1").Value = "Hola") es más corto, más rápido y no obliga a abrir la grabadora. La regla práctica: usa la grabadora para descubrir el nombre de un objeto o propiedad que desconoces, y luego reescribe el código a mano.

Recorrer una hoja con un bucle y escribir el resultado

Subimos el listón. Crea Ventas.xlsx con esta hoja:

D2fx=B2*C2
A B C D
1 Producto Precio Cantidad Total
2 Lapiz 1,50 10 15,00
3 Cuaderno 3,20 5 16,00
4 Goma 0,80 12 9,60
D2 arrastra el controlador de relleno hasta D4
Ventas

Macro que hace lo mismo desde VBA recorriendo filas de la 2 a la 10:

Sub Recorrer()
    Dim i As Long
    For i = 2 To 10
        Cells(i, 4).Value = Cells(i, 2).Value * Cells(i, 3).Value
    Next i
End Sub

Pulsa F5. La columna D (la 4) se llena con precio × cantidad desde la fila 2 hasta la 10. Si la hoja tiene datos solo hasta la fila 4, las filas 5 a 10 quedan en 0; el bucle no distingue entre datos y vacío, lo decide el código.

Comprueba: D2 vale 15, D3 vale 16 y D4 vale 9,6.

Acelerar la macro cuando hay muchas filas

Por defecto Excel redibuja la pantalla en cada cambio; con 5.000 filas eso son segundos perdidos. Se desactiva al principio y se reactiva al final con Application.ScreenUpdating:

Sub RecorrerRapido()
    Dim datos As Variant, i As Long, salida(1 To 9) As Variant
    Application.ScreenUpdating = False
    datos = Range("B2:C10").Value
    For i = 1 To 9
        salida(i) = datos(i, 1) * datos(i, 2)
    Next i
    Range("D2:D10").Value = Application.Transpose(salida)
    Application.ScreenUpdating = True
End Sub

La diferencia frente a la versión anterior: se lee todo B2:C10 de golpe a una matriz en memoria, se opera dentro de VBA y se vuelca el resultado a D2:D10 con una sola escritura a la hoja. En 10 filas apenas se nota, en 50.000 se nota muchísimo.

Guardar el libro en el formato correcto y desbloquear macros

Excel guarda por defecto como .xlsx y ahí las macros NO se incluyen — se eliminan al guardar sin avisar.

  1. En Excel: Archivo > Guardar como.
  2. Elige la carpeta y en Tipo selecciona Libro de Excel habilitado para macros (*.xlsm).
  3. Pulsa Guardar; si la hoja tenía extensión .xlsx, Excel pregunta si quieres cambiar de formato: di Sí.
ArchivoGuardar comoLibro de Excel habilitado para macros (*.xlsm)

Si abres un .xlsm descargado de internet, el Centro de confianza (Archivo > Opciones > Centro de confianza > Configuración del centro de confianza > Configuración de macros) lo suele bloquear. Antes de cambiar la seguridad, desbloquéalo a nivel de archivo desde el Explorador de Windows: clic derecho sobre el archivo > Propiedades > pestaña General > abajo, marcar Desbloquear > Aceptar. Con eso la próxima vez que lo abras las macros ya no salen en la barra amarilla.

Cuidado: No cambies la configuración global de macros a «Habilitar todas las macros» para saltarte el bloqueo por archivo. Es la puerta de entrada de casi todo el malware de Office.

Errores típicos al empezar con el editor de VBA

Tres fallos reales que vas a ver el primer día.

"Error 1004" al asignar la fórmula

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

Resultado: «Se ha producido el error '1004' en tiempo de ejecución». La causa es que .Formula solo entiende inglés; SUMA no existe para ella. Cambio: pasarlo a .FormulaLocal con punto y coma, o a .Formula con SUM en inglés.

Range("C2").Formula = "=SUM(A2:B2)"
Range("C2").FormulaLocal = "=SUMA(A2:B2)"

"Sub o Function no definidos" al ejecutar

Sub Saludos()
    Range("A1").Value = "Hola"
End Sub
' Llamada desde la ventana Inmediato o desde otra macro:
Saludo()

VBA dice que no encuentra Saludo. Mayúsculas y minúsculas importan: el Sub es Saludos (con s final) y la llamada es Saludo(). Cualquier discrepancia impide ejecutar. Arreglo: escribir el nombre igual, o usar Call Saludo() con cuidado de ponerlo exacto.

La macro no hace nada visible

Range("D2").FormulaLocal = ""

Lo único que ves es que D2 sigue igual. La causa es la cadena vacía: VBA asigna una cadena sin contenido. En otros casos pasa al ejecutar desde ThisWorkbook cuando la hoja activa no es la que el código espera. Para diagnosticar, en la ventana Inmediato (Ctrl+G) escribe ?Range("D2").FormulaLocal y Entrar: te imprime la fórmula que tiene la celda ahora mismo.

Lo que VBA no hace y qué usar en su lugar

Excel para la web no ejecuta VBA. Si alguien comparte tu libro como enlace de Excel para la web, las macros siguen ahí en el archivo pero no se ejecutan; al abrirlo en la aplicación de escritorio se vuelven a activar. En la web se automatiza con Scripts de Office (pestaña Automatizar en Excel para la web) y desde cualquier versión con Power Query (Datos > Obtener y transformar).

Las macros viven solo en .xlsm; en .xlsx Excel las borra al guardar. Si compartes el archivo con alguien que lo abrirá en versión antigua, conviértelo a .xlsx y entrega los datos sin la automatización.

El ciclo de vida de Excel 2021 termina el 13/10/2026; los libros con VBA conviene abrirlos y guardarlos al menos una vez en Excel 2024 o Microsoft 365, que siguen actualizando macros sin cambios. BUSCARX (Excel 2021 y Microsoft 365) y Power Query cubren muchos casos que antes solo se podían hacer con VBA: cruzar dos tablas, traer un CSV, resumir por categoría. VBA sigue siendo la mejor opción cuando el trabajo depende del libro concreto y la lógica a medida.

Lo que ya sabes hacer con el editor de VBA y el siguiente paso

Cinco claves para recordar:

  • Abrir el editor con Alt+F11 desde cualquier Excel de escritorio.
  • Escribir un Sub dentro de Insertar > Módulo, en un módulo independiente de ThisWorkbook.
  • Usar .Value para escribir datos y .Formula o .FormulaLocal para escribir fórmulas según el idioma.
  • Guardar siempre el libro como .xlsm; en .xlsx las macros se pierden.
  • Ejecutar con F5, avanzar línea a línea con F8 y detener con Restablecer.

El siguiente paso natural es el Examinador de objetos (F2, menú Ver > Examinador de objetos): ahí ves el modelo completo de Excel con cada propiedad documentada y ejemplos. Cuando lo necesites, crea un formulario (UserForm con Insertar > UserForm) para pedir datos al usuario antes de ejecutar la macro.

Dudas al usar el editor de VBA en Excel

Dudas al usar el editor de VBA en Excel

1. ¿Microsoft VBA tiene fecha de fin de soporte?

Microsoft no ha anunciado el fin de VBA. Siguen llegando actualizaciones del editor en las versiones de escritorio, pero Microsoft apuesta por Office Scripts y Python en Excel como alternativas modernas. Si tu licencia es Microsoft 365, ambas opciones están disponibles; en Excel 2021 solo tendrás VBA.

2. ¿Existe un compilador de VBA?

VBA no se compila en un archivo .exe aparte: al guardar el libro como .xlsm, el código se incrusta dentro del propio Excel y se ejecuta interpretado, no compilado. Si lo que necesitas es convertir macros en un ejecutable, eso ya no es VBA, es otro lenguaje como C# o VB.NET.

3. ¿Cómo empezar un curso de VBA desde cero?

Empieza por la pestaña Programador: si está oculta, actívala en Archivo > Opciones > Personalizar cinta de opciones. Después practica grabando una macro (Programador > Grabar macro) para ver el código que se genera y, por último, modifícala a mano en el editor con Alt+F11. Dedicar una hora a estos tres pasos suele ser suficiente para entender la mecánica.

4. ¿Dónde está la documentación oficial de VBA en Excel?

La referencia completa está en learn.microsoft.com, en la sección «Office VBA reference». Ahí encuentras cada objeto del modelo (Workbook, Range, Cells), sus métodos y sus propiedades, con ejemplos listos para copiar. Para una introducción en español, la ayuda de support.microsoft.com/es-es también incluye tutoriales de macros paso a paso.

5. ¿Qué es Excel Easy VBA y sirve para aprender?

«Excel Easy VBA» es un sitio web con tutoriales gratuitos sobre macros ordenados por nivel. Sirve como complemento porque los ejemplos son cortos y se pueden copiar directamente, pero al ser un recurso de terceros conviene contrastar la sintaxis con la documentación oficial de Microsoft. Úsalo para practicar y la referencia de learn.microsoft.com para resolver dudas concretas.

6. ¿Hay que descargar algo aparte para usar VBA?

No hace falta descargar nada: VBA viene integrado en las versiones de escritorio de Excel (2010, 2013, 2016, 2019, 2021, 2024 y Microsoft 365). Solo tienes que mostrar la pestaña Programador y abrir el editor con Alt+F11. En Excel para la web y en Mac, la pestaña Programador existe pero no permite ejecutar macros VBA.

7. ¿Qué son los Office Scripts y en qué se diferencian de las macros VBA?

Office Scripts son la alternativa moderna a VBA para Excel en la web y en Microsoft 365: se programan en TypeScript/JavaScript desde el menú Automatizar > Nuevo script y se guardan en OneDrive, no dentro del libro. Comparten la idea de automatizar tareas, pero mientras VBA se ejecuta solo en escritorio, los Scripts también funcionan en el navegador y se pueden compartir con un enlace.

Fuentes

  1. MicrosoftLAMBDA — documentación oficialconsultado el 13/10/2026
  2. MicrosoftRange.Formula, FormulaLocal, FormulaR1C1 y FormulaR1C1Local — documentación oficialconsultado el 13/10/2026
  3. MicrosoftEl editor de VBA y la primera macro — documentación oficialconsultado el 13/10/2026
  4. MicrosoftINTERVALO.CONFIANZA — documentación oficialconsultado el 13/10/2026
  5. MicrosoftINTERVALO.CONFIANZA.NORM — documentación oficialconsultado el 13/10/2026