Me gustaría borrar los filtros de todas las segmentaciones de datos dentro de una hoja, pero deja las otras segmentaciones de datos «de la onu-renovado».

He visto el siguiente código que actualiza todas las segmentaciones de datos en el libro, pero no puede conseguir que funcione únicamente en una hoja en particular solamente.

Dim slcr As SlicerCache

For Each slcr In ActiveWorkbook.SlicerCaches

    slcr.ClearManualFilter
Next slcr

Cualquier ayuda recibidas con gratitud!

Gracias

InformationsquelleAutor JJ Moore | 2014-03-23

1 Comentario

  1. 2

    Después de un rato de jugar y pruebas (nunca usado segmentaciones de datos a través de VBA antes), he elaborado la siguiente.

    Sin embargo, se recomienda que un slicercache puede tener las segmentaciones de datos en diferentes hojas de cálculo. Una segmentación de datos está vinculada a una segmentación de la caché, que a su vez está vinculada a un origen de datos (por ejemplo, una tabla dinámica). Si alguna de la segmentación es cambiado, la segmentación de datos de la caché es cambiado, lo que los cambios de la tabla dinámica como bien. No se puede tener 1 segmentación de datos con un filtro en y otro de segmentación de datos vinculados a la misma tabla dinámica con un filtro, mientras que la tabla dinámica que se actualiza por una segmentación de los filtros. Podría no tener sentido. 😉

    Lo que sí tiene sentido es tener múltiples segmentaciones de datos y múltiples tablas dinámicas – el uso de los de abajo, de hecho, desactive los filtros para una segmentación de datos /cache /pivote, pero no cambia nada en los demás. Esta es la única manera en que podría trabajar, así que espero que eso era lo que quería de todos modos!!

    Sub test()
        RefreshSlicersOnWorksheet ActiveSheet
    End Sub
    Public Sub RefreshSlicersOnWorksheet(ws As Worksheet)
        Dim sc As SlicerCache
        Dim scs As SlicerCaches
        Dim slice As Slicer
    
        Set scs = ws.Parent.SlicerCaches
    
        If Not scs Is Nothing Then
            For Each sc In scs
                For Each slice In sc.Slicers
                    If slice.Shape.Parent Is ws Then
                        sc.ClearManualFilter
                        Exit For 'unnecessary to check the other slicers of the slicer cache
                    End If
                Next slice
            Next sc
        End If
    
    End Sub
    • Perfecto. He añadido un par de (muy menor) se modifica para el subsector Público: Application.ScreenUpdating = False Application.Calculation = xlCalculationManual En la parte superior y la siguiente debajo de: Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Porque tengo un montón de GETPIVOTDATA de comandos dentro de mi hoja, se trata de la actualización de estos entre cada segmentación de actualización. De todos modos! Muchas gracias, una respuesta útil!
    • Gracias… he estado buscando durante horas sobre cómo conseguir las segmentaciones de datos de una hoja de cálculo!

Dejar respuesta

Please enter your comment!
Please enter your name here