2012-05-06 71 views
2

運行時錯誤 '1004':無法設置PivotItem類的Visible屬性無法設置PivotItem類的Visible屬性

Excel的VBA:

Dim pt As PivotTable 
Dim pf As PivotField 
Dim pi As PivotItem 

Set pf = pt.PivotFields("Snapshot Date") 

For Each pi In pf.PivotItems 
If pi.Name <> "(blank)" Then 
pi = DateValue(pi) 'I have tried using Cdate, Cdbl, Cstr as well. 
End If 
Next pi 

錯誤發生在這裏:

i = 1 
Do Until i >= pf.PivotItems.count - 1 

For Each pi In pf.PivotItems 
pi.Visible = False 'Error here 
Next pi 

pf.PivotItems(i).Visible = True '.. And here! 
pf.PivotItems(i + 1).Visible = True 
Loop 

數據透視表項目是日期,不知道是否需要格式化它們才能打開/關閉可見性?

我已經無數次一派,找不到任何解決這個:(一些關於非連續的項目,但我不太明白。

+1

什麼版本的Excel?另外,是否有可能在數據透視表中有未使用的項目?這會導致相同的錯誤。看到這個Contextures頁面:'http:// www.contextures.com/xlpivot04.html#Option' –

回答

2

你必須有至少一個可見PivotItem和你設置它們全部不可見,你需要遍歷所有的PivotItems,將第一個設置爲visible = True,然後測試所有其他的並相應地設置它們,然後測試第一個並相應地設置它。確定總是有一個可見的PivotItem

但是,我不太確定你的測試是什麼,你有一個循環,但不增加「我」,所以它會永遠循環,總是試圖設置PivotItems 1和2到可見。

我不知道爲什麼你得到第二個錯誤,但如果你能解釋一下你想要做什麼有可能是一個更好的辦法。

+0

它給你一個錯誤,因爲數據透視表看到所有的字段,而不是顯示的字段。 – Setrino

+0

這是我的評論?我真的不明白你在說什麼。我沒有收到任何錯誤 - 這是OP得到的錯誤。 –

+0

我向你解釋了「我不知道你爲什麼會得到第二個錯誤,但如果你能解釋你想要做什麼,那麼可能會有更好的方法。」基本上,在創建數據透視表時,所有內容都是可見的。因此,在添加所需字段之前,您必須循環並隱藏所有不需要的字段。我是這樣做的 https://jsfiddle.net/do3hbc6c/ – Setrino

0

對於任何使用谷歌搜索這個頁面的人(就像我一樣),我找到了解決這個問題的方法。

這個問題似乎只設置可見= TRUE

設置可見=假似乎很好地工作。

如果禁用多重選擇,然後重新啓用它,所有的類別,然後選擇。

從這一點就可以,然後遍歷並設置可見=假到你想要的人。

看我下面的例子(工作)代碼: -

Dim table As PivotTable 
Dim PvI As PivotItem 

Set table = ActiveSheet.PivotTables("PivotTable3") 
With table.PivotFields("ERROR CODE") 
    .ClearAllFilters 
    .EnableMultiplePageItems = False 
    .CurrentPage = "(All)" 
    .EnableMultiplePageItems = True 
    For Each PvI In .PivotItems 
     Select Case PvI.Name 
     Case "Err0" 
      PvI.Visible = False 
     End Select 
    Next 
End With 

希望這可以幫助別人。