¿Cómo cambiar el diseño de una tabla dinámica con VBA?

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.

Conoce nuestra tienda

Ver más productos

Mejora tu nivel y logra tus objetivo

Excel

Excel cursos

Access

cursos de Access

Power BI

cursos power BI

Ayúdanos a hacer crecer el proyecto

Deja un comentario