CSV

Qué es el código VBA en Excel y cómo empezar a usarlo

octubre 7, 2026 Tuto Excel 13 min read
Qué es el código VBA en Excel y cómo empezar a usarlo

VBA (Visual Basic for Applications) es el lenguaje que lleva Excel dentro: con él le dices a Excel, en español y por escrito, qué quieres que haga cuando pulses un botón. En este tutorial vas a usar una hoja de ventas de una pequeña tienda para aprender a grabar una macro, leer el código que Excel genera, escribir el tuyo propio y ejecutarlo desde un botón en la hoja. Funciona en Excel 2007, 2010, 2013, 2016, 2019, 2021, 2024 y Microsoft 365, tanto en Windows como en Mac; en Excel para la web y en los móviles no se ejecuta.

Qué es VBA y cuándo te ahorra trabajo

Imagina la hoja Ventas de una tienda: cada fila es una venta del día, con su fecha, producto, unidades e importe. Todos los lunes, antes de pasar el informe al dueño, alguien tiene que copiar el total del día a la celda D1, poner en negrita la fila 1, quitar la cuadrícula y exportar la hoja a PDF. Son cinco clics que se repiten cada semana.

VBA es el lenguaje que te permite dejar esos cinco clics grabados en un botón. Pulsas una vez el botón "Informe semanal" y Excel repite, en el orden justo y sin equivocarse, todo lo que hacías a mano. Cuando lo que tienes que hacer se repite más de tres veces, VBA te ahorra tiempo. Cuando cambia el dato pero no el proceso (sumar, dar formato, copiar, exportar), también.

No necesitas saber programar para empezar: Excel trae una grabadora de macros que convierte tus clics en código. Tu primer trabajo será leer ese código, entenderlo y, a partir de ahí, escribir el tuyo.

Dónde está la herramienta y qué necesitas tener activo

VBA vive detrás de una pestaña que viene oculta: la pestaña Programador. Lo primero es mostrarla.

  1. Abre Excel y ve a Archivo > Opciones > Personalizar cinta de opciones.
  2. En la columna de la derecha, marca la casilla Programador.
  3. Pulsa Aceptar. La pestaña aparece al final de la cinta.
ArchivoOpcionesPersonalizar cinta de opciones

Una vez la tengas visible, el editor de VBA se abre siempre con Alt+F11 (en Mac, Alt+F11 también, o Herramientas > Editor de Visual Basic si no funciona). Vuelve a Excel con Alt+Q.

Nota: En Excel para la web y en los móviles no existe la pestaña Programador ni el editor de VBA: estos apartados solo sirven en Excel de escritorio.

La pestaña Programador y sus botones

ProgramadorCódigoGrabar macro
ProgramadorCódigoVisual Basic
ProgramadorCódigoMacros
ProgramadorCódigoSeguridad de macros
ProgramadorControlesBotón
  • Grabar macro (también en Vista > Macros > Grabar macro) deja a Excel apuntar todo lo que hagas con el ratón: sirve para generar código sin escribir nada.
  • Visual Basic abre el editor donde está el código.
  • Macros (Alt+F8) muestra la lista de macros guardadas y deja ejecutarlas o borrarlas.
  • Seguridad de macros abre el Centro de confianza, donde decides si Excel bloquea o no las macros de los archivos.
  • En Controles están los botones, casillas y listas desplegables que se insertan en la hoja.

El editor de VBA: proyectos, módulos y la ayuda con F1

Al pulsar Alt+F11 se abre una ventana con tres zonas. A la izquierda, el panel Proyecto (cada libro abierto aparece como un nodo con sus hojas, y dentro de cada libro hay una carpeta Módulos donde se guardan las macros). En el centro, la ventana de código del módulo seleccionado. Abajo, la ventana Inmediato, que se abre con Ctrl+G y sirve para probar instrucciones sueltas: escribes ?Range("A1").Value y Entrar, y te dice qué hay en A1.

Pulsa F1 sobre cualquier palabra en inglés del código (por ejemplo, Range, Worksheet, MsgBox) y se abre la ayuda oficial de Microsoft con la explicación y los argumentos.

Grabar una macro sin escribir una sola línea

Abre un libro nuevo, guárdalo como Ventas_semana.xlsm y crea esta hoja:

A1fx**Fecha**
A B C D
1 Fecha Producto Unidades Importe
2 06/10/2025 Cuaderno 4 12,80
3 06/10/2025 Bolígrafo 10 7,50
4 06/10/2025 Mochila 1 28,00
5 07/10/2025 Cuaderno 2 6,40
6 07/10/2025 Bolígrafo 5 3,75
7 07/10/2025 Estuche 3 9,00
Ventas
  1. Selecciona el rango A1:D7 y ve a Programador > Código > Grabar macro.
  2. Nombre: InformeSemanal. Guardar macro en: Este libro. Aceptar.
  3. Con el rango seleccionado, en la pestaña Vista desmarca Ver > Líneas de cuadrícula.
  4. En la pestaña Inicio > Estilos > Celdas, elige Normal y pon Negrita (Ctrl+N).
  5. Selecciona la fila 1 y ponla en negrita (Ctrl+N).
  6. Pulsa Detener grabación en Programador > Código.
Comprueba: Pulsa Alt+F8, selecciona InformeSemanal y dale a Ejecutar. La cuadrícula desaparece y la fila 1 queda en negrita. Si vuelve a su estado, la macro no se grabó: repite desde el paso 1 sin tocar nada hasta que termine la grabación.

Ejecutar la macro y revisarla paso a paso

Vuelve al editor con Alt+F11 y abre Módulos > Módulo1. Verás un código parecido a este:

Sub InformeSemanal()
    Range("A1:D7").Select
    ActiveWindow.DisplayGridlines = False
    Selection.Font.Bold = True
    Rows("1:1").Select
    Selection.Font.Bold = True
End Sub

Coloca el cursor dentro del Sub y pulsa F8 para avanzar línea a línea: cada vez que pulses, Excel ejecuta esa instrucción y vuelve a la hoja para que veas qué cambió (la selección se mueve, la cuadrícula desaparece, la fila 1 se pone en negrita). F5 ejecuta todo de golpe.

Escribir tu primera macro a mano

En el mismo Módulo1, debajo de End Sub de la macro anterior, escribe este código:

Sub Saludo()
    Range("A1").Value = "Hola"
    Range("B1").Formula = "=SUM(D2:D7)"
    MsgBox "Listo"
End Sub

Pulsa F5 y mira la hoja: A1 ahora dice Hola y B1 muestra la suma de los importes. El MsgBox muestra una ventanita con la palabra "Listo".

Comprueba: B1 debe mostrar 67,45. Si ves #¿NOMBRE?, la fórmula se ha escrito mal: revisa que la suma sea exactamente =SUM(D2:D7) (en inglés, con comas).

La regla que rompe Excel si la olvidas

.Formula espera las funciones en inglés y separadas por comas. Si escribes esto, falla:

Sub FalloFormula()
    Range("C1").Formula = "=SUMA(D2:D7)"
End Sub

Al ejecutarla, Excel muestra: Se ha producido el error 1004 en tiempo de ejecución: error definido por la aplicación o el objeto. La solución es usar .FormulaLocal, que sí entiende el español y el punto y coma:

Sub ArregloFormula()
    Range("C1").FormulaLocal = "=SUMA(D2:D7)"
End Sub
Nota: En Excel configurado con punto decimal (México, Estados Unidos) el separador dentro de la fórmula es la coma: =SUMA(D2,D7) no es válido, sería =SUM(D2:D7) con dos puntos para el rango.

Recorrer una hoja como un profesional

Crea una nueva pestaña Gastos con los datos de un mes:

A1fx**Fecha**
A B C D
1 Fecha Concepto Unidades Precio
2 01/10/2025 Material 3 4,50
3 03/10/2025 Transporte 1 12,00
4 05/10/2025 Comida 2 8,75
5 08/10/2025 Material 5 4,50
6 10/10/2025 Transporte 2 12,00
7 12/10/2025 Comida 3 8,75
Gastos

Ahora añade una columna E con el total por fila y un total general en E8:

Sub CalcularGastos()
    Dim i As Long
    For i = 2 To 7
        Cells(i, 5).Value = Cells(i, 3).Value * Cells(i, 4).Value
    Next i
    Range("E8").Formula = "=SUM(E2:E7)"
    MsgBox "Total: " & Range("E8").Value
End Sub

Al ejecutar, la columna E se llena con los totales por fila y E8 muestra la suma.

E8fx=SUM(E2:E7)
C D E
2 3 4,50 13,50
3 1 12,00 12,00
4 2 8,75 17,50
5 5 4,50 22,50
6 2 12,00 24,00
7 3 8,75 26,25
8 115,75
Gastos
Comprueba: E8 debe mostrar 115,75. Si ves 0 en una fila, revisa que las celdas C y D tengan números, no texto.

Acelerar la macro apagando la pantalla

Cuando la macro recorre cientos de filas, Excel se vuelve lento porque redibuja la pantalla en cada cambio. Se lo dices con dos líneas al principio y al final:

Sub CalcularGastosRapido()
    Application.ScreenUpdating = False
    Dim i As Long
    For i = 2 To 7
        Cells(i, 5).Value = Cells(i, 3).Value * Cells(i, 4).Value
    Next i
    Range("E8").Formula = "=SUM(E2:E7)"
    Application.ScreenUpdating = True
End Sub

En esta hoja de 6 filas la diferencia apenas se nota, pero con 5.000 se nota muchísimo.

Cuidado: Pon siempre ScreenUpdating = True antes de salir, aunque haya un error. Si no, Excel queda con la pantalla congelada hasta que lo cierres y lo vuelvas a abrir.

Pasar la macro a un botón en la hoja

  1. Ve a Programador > Controles > Botón.
  2. Dibuja el botón sobre la hoja. Aparece el cuadro Asignar macro.
  3. Selecciona CalcularGastos y pulsa Aceptar.
  4. Haz clic fuera del botón para deseleccionarlo y, después, clic encima: se ejecuta la macro.
Comprueba: Al pulsar el botón, la columna E se rellena y aparece el MsgBox con el total. Si no pasa nada, abre Alt+F8 y comprueba que la macro está en la lista del libro y no en Personal.xlsb.

Por qué tu macro falla: los errores de verdad

"Se ha produced el error 1004 en tiempo de ejecución"

La línea Range("C1").Formula = "=SUMA(D2:D7)" falla porque .Formula solo entiende funciones en inglés. El mensaje exacto es "Se ha producido el error '1004' en tiempo de ejecución: error definido por la aplicación o el objeto". Se arregla cambiando a inglés: =SUM(D2:D7), o usando .FormulaLocal para mantener el español.

"Sub o Function no definidos"

Este mensaje sale cuando VBA no encuentra la macro. La causa más habitual es que el código está pegado en ThisWorkbook (el objeto del libro) en lugar de en un módulo. Selecciónalo, córtalo con Ctrl+X, haz doble clic en Módulo1 y pégalo con Ctrl+V. La otra causa es que falte el End Sub al final: VBA entiende que la macro sigue hasta el siguiente End Sub y se pierde.

La macro no hace nada al pulsar el botón

Si el botón no responde, suele ser por una de dos: la macro está en Personal.xlsb (el libro oculto de macros personales) y desde el botón no se llama, o el botón apunta a otra macro distinta de la que crees. Haz clic derecho sobre el botón, elige Asignar macro y comprueba el nombre. Si la macro vive en Personal.xlsb, muévela al Módulo1 del libro donde está el botón.

Lo que VBA no puede hacer por ti

VBA no funciona en Excel para la web ni en Excel para móviles: las macros se ignoran al abrir el archivo. Si necesitas automatizar allí, la alternativa son los Scripts de Office, que usan JavaScript en vez de VBA y cubren un subconjunto más pequeño de tareas.

Un libro con macros debe guardarse como .xlsm (Libro de Excel habilitado para macros). Si lo guardas como .xlsx, Excel te avisa de que las macros se perderán y las borra.

Por último, el Centro de confianza bloquea las macros de cualquier archivo descargado de Internet o recibido por correo. Verás una barra amarilla encima de la hoja: pulsa Habilitar contenido solo si confías en el origen. En una red de empresa, el administrador puede configurar que las macros nunca se ejecuten sin firmar digitalmente.

Lo que ya sabes hacer con VBA y tu siguiente paso

  • Tienes la pestaña Programador a la vista y sabes abrir el editor con Alt+F11.
  • Has grabado una macro, la has ejecutado con Alt+F8 y la has depurado paso a paso con F8.
  • Has leído el código que generó la grabadora y has entendido qué hace cada línea.
  • Has escrito un Sub a mano, con variables, bucles For...Next y un MsgBox.
  • Sabes poner un botón en la hoja y asignarle una macro.

Tu siguiente paso es justo el contrario del que harías instintivamente: abre la grabadora y genera código a propósito. Pulsa Grabar macro, aplica un formato, ordena una columna, inserta un gráfico. Cuando termines, mira el código en Módulo1 y fíjate en los nombres de los objetos: ActiveSheet.Sort, ChartObjects.Add, PageSetup.Orientation. Así es como se descubren, sin documentación, las propiedades que necesitas para escribir tus propias macros.

Dudas al empezar con VBA en Excel

1. ¿Se puede aprender VBA de Excel desde cero aunque no se sepa programar?

Sí, VBA está pensado para gente sin experiencia previa. La pestaña Programador trae la herramienta Grabar macro, que traduce tus clics a código sin que escribas nada; después, en el editor (Alt+F11), puedes leer y modificar ese código. Con esa base, sumas poco a poco bucles, condicionales y formularios y acabas haciendo tus propios programas dentro de Excel.

2. ¿Dónde está la documentación oficial de VBA para Excel?

La referencia oficial está en learn.microsoft.com, en la sección Office VBA reference, con la lista completa de objetos, métodos y propiedades del modelo de objetos de Excel. Para dudas rápidas, también sirve el Examinador de objetos del editor (Alt+F11 > F2): escribes el nombre de un objeto y te muestra sus miembros con su descripción.

3. ¿Hay que descargar algo aparte para programar VBA en Excel?

No, VBA viene integrado en las versiones de escritorio de Excel (Microsoft 365, 2024, 2021, 2019, 2016, 2013, 2010, 2007 y 2003). Solo tienes que activar la pestaña Programador en Archivo > Opciones > Personalizar cinta de opciones. Eso sí, Excel para la web no ejecuta macros VBA: allí se automatiza con Scripts de Office.

4. ¿Cómo elegir un buen curso de VBA para Excel?

Un buen curso empieza por la Grabadora de macros y los objetos básicos (Workbook, Worksheet, Range), no por la sintaxis abstracta. Fíjate en que use ejemplos reales (informes, listados, formularios) y que toque el modelo de objetos, no solo el lenguaje. Para empezar gratis tienes la ayuda de learn.microsoft.com; para algo más guiado, cursos en vídeo de plataformas reconocidas o los tutoriales de esta web.

5. ¿Existe un compilador de VBA en el sentido tradicional?

No, VBA no se compila a un ejecutable como C# o Java: es un lenguaje interpretado que vive dentro de Excel. Cuando abres el editor (Alt+F11) ves y editas el código directamente; al ejecutar la macro, Excel lo interpreta al vuelo. Si quieres algo más parecido a un compilador, tienes VB.NET en Visual Studio, pero es otra plataforma distinta.

6. ¿Qué es una macro en Excel y en qué se diferencia de VBA?

Una macro es una acción grabada o programada que Excel ejecuta por ti; VBA es el lenguaje en que está escrita. Cuando grabas con la Grabadora de macros, Excel escribe el código VBA equivalente: la macro es el resultado, VBA el idioma. Por eso «grabar macros» es el primer paso para empezar a usar VBA: ves el código y, poco a poco, aprendes a modificarlo.

7. ¿Cómo funciona el bucle Do Until en VBA?

Do Until repite un bloque de instrucciones hasta que una condición se cumpla: Do Until x >= 10 : x = x + 1 : Loop. Es útil cuando no sabes cuántas veces hay que iterar, por ejemplo para recorrer filas hasta encontrar la primera vacía con la propiedad End(xlUp). Si prefieres evaluar la condición al final, usa Do : Loop Until condición.

8. ¿Cómo se cierra un libro de Excel con VBA?

Con el método Close del objeto Workbook, por ejemplo ThisWorkbook.Close si quieres cerrar el libro donde está el código, o Workbooks("Ventas.xlsx").Close para uno concreto. Para que no pida guardar, añade SaveChanges:=False; para que avise y pregunte, SaveChanges:=True. Con ThisWorkbook.Close True se cierra guardando los cambios sin preguntar.

Fuentes

  1. MicrosoftFuture of (Excel) VBA (Macros)? – Microsoft Q&Aconsultado el 05/10/2026
  2. MicrosoftCODIGO — documentación oficialconsultado el 05/10/2026
  3. MicrosoftEl editor de VBA y la primera macro — documentación oficialconsultado el 05/10/2026
  4. MicrosoftLAMBDA — documentación oficialconsultado el 05/10/2026
  5. MicrosoftRange.Formula, FormulaLocal, FormulaR1C1 y FormulaR1C1Local — documentación oficialconsultado el 05/10/2026