El Editor de Visual Basic (VBE) es el entorno integrado donde escribes, editas y depuras todo el código VBA de tus macros en Excel.
Acceder al VBE es el primer paso para dejar de depender del grabador y escribir código propio. Aquí es donde ocurre el verdadero trabajo avanzado.
Cómo abrir el VBE
Tienes tres formas de abrir el Editor de Visual Basic:
- Atajo de teclado: Presiona
Alt + F11desde cualquier hoja de Excel. Es el método más rápido. - Pestaña Desarrollador: Haz clic en el botón Visual Basic en el grupo Código.
- Clic derecho en una pestaña de hoja: Selecciona Ver código para abrir directamente el módulo de esa hoja.
El VBE abre una ventana separada. Excel sigue abierto en segundo plano; puedes alternar entre ambos con Alt + F11.
Las cuatro zonas principales del VBE
El VBE tiene cuatro áreas que debes conocer desde el inicio.
1. Explorador de proyectos
El Explorador de proyectos muestra todos los objetos del libro actual organizados en árbol. Aparece en la esquina superior izquierda.
Cada libro abierto es un proyecto. Dentro verás:
| Elemento | Descripción |
|---|---|
Microsoft Excel Objetos |
Contiene ThisWorkbook y cada hoja (Sheet1, Sheet2…) |
Módulos |
Carpeta donde viven los módulos estándar de código |
Formularios |
Carpeta para los UserForms (formularios personalizados) |
Módulos de clase |
Para programación orientada a objetos avanzada |
Si no ves el Explorador de proyectos, presiona Ctrl + R.
2. Ventana de propiedades
La ventana de propiedades muestra los atributos del objeto seleccionado en el Explorador. Aparece debajo del Explorador, a la izquierda.
Por ejemplo, si seleccionas Sheet1, verás su propiedad Name. Puedes cambiar el nombre interno de la hoja aquí sin afectar la pestaña visible en Excel.
Si no aparece, presiona F4.
3. Ventana de código
La ventana de código es el editor de texto donde escribes el código VBA. Ocupa la zona central y derecha del VBE.
En la parte superior de esta ventana hay dos menús desplegables:
- Izquierdo: Lista de objetos disponibles (General, nombre del formulario, etc.).
- Derecho: Lista de procedimientos o eventos del objeto seleccionado.
Esta ventana tiene autocompletado inteligente. Cuando escribes el nombre de un objeto y luego un punto, Excel sugiere propiedades y métodos disponibles.
4. Ventana Inmediato
La ventana Inmediato sirve para probar código línea por línea sin ejecutar toda la macro. Aparece en la parte inferior.
Escribe cualquier instrucción y presiona Enter para ejecutarla al instante. Es ideal para depurar valores.
Si no la ves, presiona Ctrl + G.
Tipos de módulos en VBA
No todo el código va en el mismo lugar. Elegir el módulo correcto es clave.
Módulo estándar: Es el lugar más común para escribir macros generales. Se insertan manualmente desde el menú Insertar → Módulo. El código aquí es accesible desde todo el libro.
Módulo de hoja (Sheet1, Sheet2…): Contiene código que responde a eventos de esa hoja específica. Por ejemplo, ejecutar algo cuando el usuario cambia una celda.
Módulo ThisWorkbook: Contiene código vinculado a eventos del libro completo. Por ejemplo, ejecutar una macro al abrir o cerrar el archivo.
Módulo de clase: Para crear tus propios objetos con propiedades y métodos. Es un tema de nivel experto.
Para esta lección, todo el código va en un módulo estándar.
Cómo insertar un módulo estándar
- En el VBE, ve al menú Insertar.
- Haz clic en Módulo.
- Aparecerá
Módulo1en el Explorador de proyectos bajo la carpeta Módulos. - La ventana de código central se activa lista para escribir.
Puedes crear varios módulos para organizar tu código. Por ejemplo: ModuloDatos, ModuloReportes, ModuloFormatos.
Estructura de un procedimiento Sub
Un procedimiento Sub es el bloque de código más básico en VBA. Define una macro con nombre que puedes ejecutar manualmente o desde otra macro.
La estructura es:
Sub NombreDeLaMacro()
' Aquí va el código
End Sub
Reglas del nombre:
- Sin espacios. Usa guión bajo si necesitas separar palabras:
Calcular_Ventas. - Sin caracteres especiales ni acentos.
- No puede empezar con un número.
Las líneas que empiezan con apóstrofo (') son comentarios. Excel las ignora al ejecutar. Úsalos para documentar qué hace cada sección.
Ejemplo 1 — Primer procedimiento Sub básico
Este procedimiento escribe un mensaje en la celda A1 de la hoja activa:
Sub SaludoBimbo()
Range("A1").Value = "Reporte generado por RRHH"
End Sub
Para ejecutarlo desde el VBE: coloca el cursor dentro del procedimiento y presiona F5.
Para ejecutarlo desde Excel: pestaña Desarrollador → Macros → selecciona SaludoBimbo → Ejecutar.
Ejemplo 2 — Procedimiento con variables y formato de moneda
Este procedimiento calcula el bono mensual de un colaborador de FEMSA y lo escribe en la hoja:
Sub CalcularBono()
Dim salarioBase As Long
Dim porcentajeBono As Double
Dim bonoFinal As Long
salarioBase = 22000
porcentajeBono = 0.15
bonoFinal = salarioBase * porcentajeBono
Range("B2").Value = "Salario base:"
Range("C2").Value = "$22,000"
Range("B3").Value = "Bono (15%):"
Range("C3").Value = "$3,300"
End Sub
Dim declara una variable. As Long define que almacena números enteros grandes. As Double permite decimales.
Observa que los valores de moneda en las celdas se escriben como texto formateado ("$22,000") para garantizar la presentación correcta.
Ejemplo 3 — Procedimiento que recorre varias celdas
Este procedimiento marca en rojo las celdas del rango A1:A10 que estén vacías. Útil para limpiar bases de datos de Liverpool antes de importar al sistema:
Sub MarcarCeldasVacias()
Dim i As Integer
For i = 1 To 10
If Cells(i, 1).Value = "" Then
Cells(i, 1).Interior.Color = RGB(255, 0, 0)
End If
Next i
End Sub
Cells(fila, columna) es otra forma de referenciar celdas. Cells(1, 1) equivale a A1, Cells(2, 1) equivale a A2, y así.
For...Next repite el bloque de código un número definido de veces. If...Then evalúa una condición.
Errores comunes
Error 1 — Escribir código fuera de un procedimiento Sub
Todo el código ejecutable debe estar entre Sub y End Sub. Si escribes instrucciones sueltas fuera de ese bloque, VBA marcará un error de compilación en rojo.
Correcto:
Sub MiMacro()
MsgBox "Hola"
End Sub
Incorrecto:
MsgBox "Hola" ' Error: fuera de cualquier procedimiento
Error 2 — Confundir el módulo de hoja con el módulo estándar
Si haces doble clic en Sheet1 en el Explorador y escribes una macro general ahí, la macro puede no aparecer en el menú Macros de Excel. Las macros generales van siempre en un módulo estándar.
Error 3 — No guardar después de escribir código
El VBE no guarda automáticamente. Si cierras Excel sin guardar, pierdes todo el código escrito en esa sesión. Presiona Ctrl + S frecuentemente. Recuerda: el archivo debe estar en formato .xlsm.
Error 4 — Usar nombres de variables reservadas
VBA tiene palabras reservadas que no puedes usar como nombres de variables: Sub, End, If, For, Next, Do, Loop, True, False. Usar una de estas como nombre de variable genera error inmediato.
Atajos esenciales del VBE
| Atajo | Función |
|---|---|
F5 |
Ejecutar el procedimiento actual |
F8 |
Ejecutar línea por línea (modo depuración) |
Ctrl + G |
Abrir ventana Inmediato |
Ctrl + R |
Abrir Explorador de proyectos |
F4 |
Abrir ventana de propiedades |
Ctrl + Z |
Deshacer en el editor |
Ctrl + S |
Guardar el proyecto |
Alt + F11 |
Alternar entre Excel y VBE |
Configuración recomendada del VBE
Antes de escribir código, activa esta opción:
- Ve a Herramientas → Opciones dentro del VBE.
- En la pestaña Editor, marca la casilla Requerir declaración de variables.
Esto agrega automáticamente Option Explicit al inicio de cada módulo nuevo. Con esa instrucción, VBA obliga a declarar todas las variables con Dim antes de usarlas. Esto evita errores silenciosos por errores de tipeo en nombres de variables.
Es una práctica estándar en cualquier entorno profesional.