Estoy tratando de seleccionar un filtro de informe, en este caso Canadá. Eso significa que el resto debe ser invisible.
Este código funciona sin problema:

Public Sub FilterPivotTable()

    With ActiveSheet.PivotTables("Epidemiology").PivotFields("COUNTRY")

        .PivotItems("Canada").Visible = True
        .PivotItems("USA").Visible = False
        .PivotItems("Germany").Visible = False
        .PivotItems("France").Visible = False

    End With

End Sub

Sin embargo, estoy tratando de prepararme para cuando añadimos otros países de nuestro «Epidemiología» tabla dinámica, por lo que traté de tener un bucle for. Este código no funciona:

With ActiveSheet.PivotTables("Epidemiology").PivotFields("COUNTRY")

    .PivotItems("Canada").Visible = True

    For Each Pi In .PivotItems
        If Pi.Value = "CANADA" Then
            Pi.Visible = True
        Else
            Pi.Visible = False
        End If
    Next Pi

End With

Me da un error en el Pi.Visible = False línea. El error que me sale es Run-time error '1004': Unable to set the Visible property of the PivotItem class

Qué no funciona dentro de un bucle for?!

Frustrante, todos los ejemplos que me encuentre en línea es similar a la sintaxis. (Algunos utilizan un índice, pero he intentado eso y tiene el mismo error.)

InformationsquelleAutor user1507455 | 2013-01-17

2 Comentarios

  1. 7

    Es esto lo que estamos tratando?

    Sub Sample()
        Dim Pi As PivotItem
    
        With ActiveSheet.PivotTables("Epidemiology").PivotFields("COUNTRY")
    
            .PivotItems("Canada").Visible = True
    
            For Each Pi In .PivotItems
                If UCase(Pi.Value) = "CANADA" Then
                    Pi.Visible = True
                Else
                    Pi.Visible = False
                End If
            Next Pi
        End With
    End Sub
    • Que hizo el trabajo! Gracias! No exactamente seguro de cómo su cambio afectaría el error «no se puede establecer la propiedad Visible de la PivotItem clase», pero si funciona, no lo arregles.
    • Estaba utilizando «CANADÁ» y la celda había «Canadá» (mayúsculas y minúsculas), así que no era capaz de encontrar y por lo que estaba tratando de ocultar todo el pivote de los elementos. Y cuando llegó al último elemento pivote, ya que no se pueden ocultar todos pivote elementos, se fueron consiguiendo que el error 🙂
  2. 0

    En una tabla dinámica de filtro, debe tener al menos un elemento seleccionado en todo momento. Incluso si usted tiene la intención de seleccionar uno más adelante en el código.

    With Pt.PivotFields("COUNTRYSCENARIO")
    
     ' Sets all filters to true, resetting it.
     .ClearAllFilters
    
     ' This is necessary if you want to select any options
     ' other than "All Pivot Items = Visible" and 
     ' "OnlyOneSpecificPivotItem = Visible"
     .EnableMultiplePageItems = True
    
     If .PivotItems.Count > 0 Then
    
         ' goofy but necessary
         Set firstPi = .PivotItems(1)
    
             For Each Pi In .PivotItems                                
    
                 ' Make sure that that first pivot item is visible.
                 ' It gets mad if it's already visible and you
                 ' set it to visible with firstPi.Visible = True
                 ' ...pretty silly
    
                 If firstPi.Visible = False Then firstPi.Visible = True
    
                 ' Don't loop through firstPi
                 If Pi.Value <> firstPi.Value Then
    
                     If Pi.Value = opt1 Or Pi.Value = opt2 Or Pi.Value = opt3 Then
                         Pi.Visible = True
    
                     ElseIf Pi.Visible = True Then
    
                         Pi.Visible = False
    
                     End If
    
                 End If
    
              Next Pi
    
              ' Finally perform the check on the first pivot item   
              If firstPi = opt1 Or firstPi = opt2 Or firstPi = opt3 Then
                  firstPi.Visible = True
              Else
                  firstPi.Visible = False
              End If
           End If
    End With

    Aviso de que si intenta seleccionar nada, por ejemplo, optar 1 = «» y opt2 = «» y opt3 = «», tendrá el mismo error: usted debe tener al menos un pivote el elemento seleccionado.

Dejar respuesta

Please enter your comment!
Please enter your name here