Contenido
Cambiar el diseño de una tabla dinámica utilizando VBA (Visual Basic for Applications) en Excel puede agilizar tareas repetitivas y personalizar el diseño según tus necesidades. Aquí te muestro un ejemplo básico de cómo hacerlo:
Cambiar el diseño de una tabla dinámica con VBA
Supongamos que ya tienes una tabla dinámica creada en una hoja llamada «Hoja1», y su nombre es «TablaDinámica1». El siguiente ejemplo de código VBA realiza algunos cambios en el diseño de la tabla dinámica, como establecer el diseño de informe en formato de tabla, o cambiar el diseño de las etiquetas de filas y columnas.
Pasos para insertar el código VBA:
Sub CambiarDisenoTablaDinamica()
Dim ws As Worksheet
Dim pt As PivotTable
' Define la hoja de cálculo que contiene la tabla dinámica
Set ws = ThisWorkbook.Sheets("Hoja1")
' Obtiene la tabla dinámica por su nombre
Set pt = ws.PivotTables("TablaDinámica1")
' Cambia el diseño del informe a tipo tabular
pt.RowAxisLayout xlTabularRow
' Mostrar subtotales en la parte superior del grupo
pt.SubtotalLocation = xlAtTop
' Desactivar totales generales para filas y columnas
pt.ColumnGrand = False
pt.RowGrand = False
' Usar el mismo ancho de columna al actualizar
pt.PreserveFormatting = True
' Activar el diseño clásico de tabla dinámica
pt.InGridDropZones = True
' Mostrar los elementos con etiquetas de fila/columna en blanco
pt.DisplayNullString = True
pt.NullString = ""
' Cambia el diseño de las etiquetas para filas y columnas (Agrupado)
pt.LayoutRowDefault = xlOutlineRow
MsgBox "El diseño de la tabla dinámica ha sido modificado."
End Sub
- Abrir el Editor de VBA:
- Presiona `Alt + F11` para abrir el Editor de VBA.
- Insertar un Módulo nuevo:
- Haz clic derecho en «VBAProject (tu archivo .xlsm o .xlsb)».
- Selecciona `Insertar` -> `Módulo`.
- Pegar el Código:
- Copia y pega el siguiente código en el módulo nuevo.
Explicación del código:
- RowAxisLayout: Cambia el diseño de las filas. `xlTabularRow` aplica un diseño tabular.
- SubtotalLocation: Define la ubicación de los subtotales, ya sea arriba (`xlAtTop`) o abajo (`xlAtBottom`).
- ColumnGrand/RowGrand: Desactiva los totales generales para filas y columnas.
- PreserveFormatting: Mantiene el formato de las columnas al actualizar la tabla.
- InGridDropZones: Permite el diseño clásico, similar a versiones anteriores de Excel.
- DisplayNullString y NullString: Muestra elementos para valores vacíos en etiquetas de fila/columna.
- LayoutRowDefault: Ajusta el diseño por defecto de las filas.
Puedes ajustar este código según sea necesario para adaptarlo a tus propias tablas dinámicas y necesidades específicas. Asegúrate de que los nombres de las hojas y las tablas dinámicas coincidan con los de tu archivo.