Ocultar filtros en tablas dinámicas

martes, septiembre 22, 2015

Cuando creamos una tabla dinámica Excel instala filtros en los distintos campos (filas, columnas y filtro del informe)


Si por algún motivo queremos ocultar las flechas de los filtros, por ejemplo para evitar que un usuario cambie el contenido del informe, podemos usar la opción "Encabezados de campos" en el grupo Mostrar en las Opciones de las tablas dinámicas

Pero esta opción tiene un problema: no sólo quita las flechas sino también los encabezados

y como bono adicional, no quita el encabezado ni la flecha del filtro del informe. Los encabezados Ciudad, Agente y Año han desaparecido del informe dejando a nuestro desprevenido y poco informado usuario cavilando sobre si Janet Leverling es un agente de ventas o tal vez un cliente.

Para quitar las flechas de los filtros sin quitar los encabezados podemos usar esta macro

Sub ocultar_Filtros()
Dim ptbl As PivotTable
Dim pfld As PivotField
    Set ptbl = ActiveSheet.PivotTables(1)
      For Each pfld In ptbl.PivotFields
          pfld.EnableItemSelection = False
      Next pfld
End Sub


Esta animación muestra el resultado


Para volver a mostrar los filtros usamos esta macro, igual a la anterior pero con la propiedad EnableItemSelection con el valor True

Sub mostrar_Filtros()
Dim ptbl As PivotTable
Dim pfld As PivotField
    Set ptbl = ActiveSheet.PivotTables(1)
      For Each pfld In ptbl.PivotFields
          pfld.EnableItemSelection = True
      Next pfld
End Sub


De la misma manera podemos ocultar el filtro de un determinado campo. Para evitar que el usuario pueda filtrar el informe por Agente usamos esta macro

Sub ocultar_Item()
Dim ptbl As PivotTable
Dim pfld As PivotField

    Set ptbl = ActiveSheet.PivotTables(1)
    ptbl.PivotFields("Agente").EnableItemSelection = False
  
End Sub


Para volver a mostrar el filtro del campo cambiamos el valor de la propiedad EnableItemSelection a True.


2 comments:

Fernando García Moya 31 octubre, 2015 02:08  

Creo que hay una errata en la primera macro, en la fila 5

Lo correcto sería: For Each pfld In ptbl.PivotFields

Jorge Dunkelman 01 noviembre, 2015 11:34  

Efectivamente. Corregido!

Gracias por colaborar.

Publicar un comentario

Google+ Followers

Seguidores

Google+ Badge

Términos Legales

  © Blogger template On The Road by Ourblogtemplates.com 2009

Back to TOP