2016-07-25 13 views
0

nicht setzen Ich habe den folgenden Code von hier: Looping through report filters to change visibility doesn't work, wo die Lösung als funktionierend markiert ist. Nach der Änderung nach meinem Bedürfnis, ist es wie folgt aus:Fehler '1004': Konnte die Visible-Eigenschaft der PivotItem-Klasse

With pt.PivotFields(6) 
    .ClearAllFilters 
    If .PivotItems.Count > 0 Then 

     'goofy but necessary 
     Set firstPi = .PivotItems(1) 

     For Each pi In .PivotItems 

      If firstPi.Visible = False Then 
       firstPi.Visible = True 
      End If 

      'Don't loop through firstPi 
      If pi.Value <> firstPi.Value Then 
       itemValue = pt.GetPivotData("[Measures].[Nr of Cancelled]", "[Characteristics].[Reason]", pi.Name).Value 

       rw = rw + 1 
       nwSheet.Cells(rw, 1).Value = pi.Name 
       nwSheet.Cells(rw, 2).Value = pi.Visible 
       If itemValue < 2000 Then 
        If pi.Visible = True Then 
         pi.Visible = False 'Error here 
        End If 
       Else 
        MsgBox pi.Value 
        If pi.Visible = False Then 
         pi.Visible = True 'Error here 
        End If 
       End If 
      End If 
     Next 

       'Finally perform the check on the first pivot item 
       If firstPi > 2000 Then 
        firstPi.Visible = True 
       Else 
        firstPi.Visible = False 
       End If 
      End If 
    End With 

Ich sehe, dass der gesamte Code funktioniert gut, und ich bin vor nur Fehler die Linien pi.Visible = True oder pi.Visible = False

Ich bin mir nicht sicher, wo Ich habe es falsch gemacht, dass der Code nicht funktioniert.

Wenn ich Internet für die soltuion suchte, stieß ich auf diesen Link: https://support.microsoft.com/en-us/kb/114822 wo MS erwähnt, dass Nurzusammenhängende Elemente in einem Pivottable-Feld ausgeblendet werden können. Bedeutet das, dass die Elemente in meiner Tabelle nicht zusammenhängend sind? Kann mir jemand helfen? Ich bin hier verloren.

+0

*** Sind *** die Elemente in der Tabelle zusammenhängende werden? Ich bezweifle, dass jemand auf SO das beantworten kann. – Comintern

+0

Wie kann ich feststellen, ob es zusammenhängend ist oder nicht? Ich habe keine Idee reg dies – Pramod

+0

Kann ich Ihre Excel-Datei sehen? Wenn ja, dann lade es bitte auf eine kostenlose Dateifreigabeseite hoch und teile den Link hier. Stellen Sie außerdem sicher, dass vertrauliche Daten durch Dummy-Daten ersetzt werden. –

Antwort

1

Ich habe keine Lösung für den Fehler gefunden. Aber ich habe einen anderen Weg gefunden, diese Aufgabe zu erfüllen. Ich benutzte Array, das alle Elemente zu speichern, zu verstecken und Gegenstände sichtbar zu sein, so dass ich entweder HiddenItemsList oder VisibleItemsList anrufen:

For Each pvtitem In pt.PivotFields(6).PivotItems 
     On Error GoTo skipreason 
     itemValue = pt.GetPivotData("[Measures].[Cancelled]", "[Characteristics].[Reason]", pvtitem.Name).Value 
     If itemValue < 2000 Then 
      hiddenReasons(hiddenCount) = pvtitem.Name 
      hiddenCount = hiddenCount + 1 
     Else 
      visibleReasons(visibleCount) = pvtitem.Name 
      visibleCount = visibleCount + 1 
     End If 

Sheets("Cancels").PivotTables("Cancels").PivotFields(_ 
    "[Characteristics].[Reason].[Reason]" _ 
    ).VisibleItemsList = Array(visibleReasons()) 
+0

++ Froh, dass du es selbst gelöst hast :) –

Verwandte Themen