Cómo VBA automatiza Excel con macros
Clase 12 de 20 • Curso de Excel Avanzado
Contenido del curso
Módulo 2: Modelado de Datos con Power Pivot y DAX
Módulo 3: Funciones y Herramientas de Análisis Avanzado
Módulo 4: Automatización con Macros y VBA
Módulo 5: Creación de Dashboards Interactivos
Domina Excel con confianza usando Visual Basic for Applications para automatizar tareas clave, desde actualizar consultas hasta crear funciones personalizadas que operan sobre tablas dinámicas. Aquí verás cómo entrar al editor, entender el modelo objeto‑método‑propiedad y construir código claro con variables, comentarios y buenas prácticas.
¿Cómo entrar a VBA y crear tu primera macro en Excel?
Abrir el editor es simple: pestaña programador y clic en Visual Basic, o el atajo Alt+F11. El panel de proyectos muestra los archivos abiertos y sus elementos: hojas y módulos. Los módulos son el lugar ideal para escribir macros. Una macro se define como una subrutina: inicia con Sub y termina con End Sub.
- Pestaña programador y botón Visual Basic.
- Clic derecho en el proyecto: insertar módulo.
- Crear la subrutina sin espacios en el nombre.
- Ejecutar con el botón play y asignar a un botón o imagen desde Excel.
Código base para actualizar todas las consultas y tablas dinámicas del libro:
Sub actualizar_consultas()
ThisWorkbook.RefreshAll
End Sub
Puntos clave: - ThisWorkbook es el objeto: el archivo activo. - RefreshAll es el método: actualiza consultas y tablas. - Puedes llamar la macro desde la pestaña macros y asignarla a un botón con “asignar macro”.
¿Qué objetos, métodos y variables usa VBA en Excel?
VBA trabaja con programación orientada a objetos: primero el objeto, luego la acción o método y, si aplica, propiedades y parámetros. Esto permite leer el código como “objeto.método parámetro”.
- Objetos frecuentes: Application, Workbook, Worksheets, Range, Cells, Rows, Selection, PivotTable.
- Estructura típica: objeto, método y parámetros.
- Palabras clave esenciales: Sub, End Sub, Function, End Function, Public, Private.
Sobre variables y tipos: - Declaración con Dim: crea “cajitas” para guardar valores temporales. - Tipos con As: número con decimales, texto, rango o tabla dinámica. - Set: asigna objetos a variables (por ejemplo, un PivotTable a una variable). - Comentarios con apóstrofe: documentan qué hace cada parte del código.
Buenas prácticas que facilitan el mantenimiento: - Nombrar macros y variables de forma clara. - Agregar comentarios donde haya lógica clave. - Organizar el código en módulos separados por tema.
¿Cómo construir una función personalizada para comparar totales de tablas dinámicas?
Una función personalizada permite usar lógica propia en celdas, tal como una función nativa de Excel. Ejemplo: “comparar totales” recibe dos rangos de tablas dinámicas (gastos y ventas), obtiene el total general de cada una y devuelve la diferencia: ventas menos gastos. En Excel se usaría como: =comparar_totales(E5, D5).
Pasos de la función: - Definir función pública con dos parámetros tipo rango. - Declarar variables para los PivotTable y para los totales. - Asignar cada PivotTable a partir del rango recibido con Set. - Obtener el total general de la primera columna de cada tabla. - Devolver la resta: total ventas menos total gastos.
Fragmento ilustrativo del esqueleto:
Public Function comparar_totales(rng_gastos As Range, rng_ventas As Range) As Double
' Declaración de variables.
Dim ptGastos As PivotTable, ptVentas As PivotTable
Dim totalGastos As Double, totalVentas As Double
' Asignar objetos a partir de los rangos de entrada.
Set ptGastos = rng_gastos.PivotTable
Set ptVentas = rng_ventas.PivotTable
' Obtener el total general de cada tabla dinámica (columna 1).
' totalGastos = [...]
' totalVentas = [...]
' Resultado: ventas menos gastos.
comparar_totales = totalVentas - totalGastos
End Function
Detalles que marcan la diferencia: - Public hace visible la función desde Excel; Private la limita al editor. - Los tipos Double admiten números grandes y decimales. - Los comentarios ayudan a recordar el propósito y el flujo. - Si necesitas porcentaje, cambia la operación final por una división.
Flujo mental al programar: - Definir entradas y salidas. - Declarar y tipar variables. - Identificar objetos y métodos. - Ejecutar acciones y devolver el resultado.
¿Te gustaría ver más ejemplos de funciones personalizadas para tablas dinámicas o depuración de macros? Deja tus preguntas y comenta qué automatización te interesa construir.