2016-07-25 121 views
0

我從這裏得到了下面的代碼:Looping through report filters to change visibility doesn't work解決方案標記爲工作。根據我的需要修改後,它是這樣的:錯誤'1004':無法設置PivotItem類的Visible屬性

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 

我看到整個代碼工作正常,我面對的錯誤只是線pi.Visible = Truepi.Visible = False

我不知道在哪裏我做錯了代碼不工作。

當我爲soltuion搜索互聯網,我遇到了這個鏈接:https://support.microsoft.com/en-us/kb/114822其中MS提到,在數據透視表字段只有連續項可以被隱藏。 這是否意味着我的表中的項目不是連續的?誰能幫我?我迷失在這裏。

+0

*** ***是在表中的條目是相連的?我懷疑任何人都可以回答這個問題。 – Comintern

+0

我怎樣才能確定它是否是連續的?我不知道註冊這個 – Pramod

+0

我可以看到你的Excel文件嗎?如果是,請將其上傳到免費的文件共享網站,並在此處分享鏈接。還要確保如果您有任何機密數據,然後將其替換爲虛擬數據。 –

回答

1

我沒有找到任何解決方案的錯誤。但我找到了另一種方法來完成這項任務。我用數組來存儲所有隱藏的項目,項目是可見的,這樣我可以調用HiddenItemsList或VisibleItemsList:

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

++很高興你自己解決了:) –

相關問題