在Stack Overflow,msdn,Ozgrid等這裏經過一整天的研究之後,我終於辭職並在這裏問我的問題。VBA PivotField CurrentPage問題 - 過濾器工作於「2018」,但不是「2017」
我有一些透視圖顯示數據透視表的值。圖表在一張表中,在另一張表中透視表。在第三個工作表中,我有一個允許用戶選擇「2017」或「2018」的下拉菜單。基於答案,它過濾使用下面的代碼的所有數據透視表:
Worksheets(8).PivotTables("Table1").PivotFields("Year").CurrentPage = year_target
Worksheets(8).PivotTables("Table2").PivotFields("Year").CurrentPage = year_target
Worksheets(8).PivotTables("Table3").PivotFields("Year").CurrentPage = year_target
現在,如果我選擇「2018」,所有的數據透視表和圖表更新,但如果我選擇「2017年」我的錯誤:
Run-time error '5': Invalid procedure call or argument
變量year_target根據選擇很好地更新到2017年和2018年,我也嘗試了硬編碼值而不是變量 - 再次2018年效果不錯,但不2017年。如果我去手動點擊「2017」數據透視表(即不使用VBA)它工作正常,透視表和圖表過濾器預期在2017年。數據透視表存在名稱「Table1」等。我的c包括問題是在CurrentPage函數中的某個地方(?)
你對解決方案有任何想法嗎? 會很感激!
截圖:1
編輯:一個星期後,我現在終於設法得到它的權利。我從未找到根本原因。我重新格式化並重新命名了所有內容,圍繞數據透視表移動,爲每個數據透視表創建新圖表和新圖表,以及我能想到的所有其他內容,並突然使其運行。我最好的猜測是有一些舊的格式被隱藏在某處,我在拼命去除的努力中。感謝您的支持。
看看我的答案和下面的代碼,讓我知道它的工作 –
我建議你錄製宏,而今年手動更改所有三個數據透視表「,然後查看結果代碼以查看是否有任何突出顯示。也許在這裏發佈結果代碼。 – jeffreyweir
@jeffreyweir我記錄了下面的代碼:。 子Macro6() ActiveSheet.PivotTables( 「PivotTable5」)透視字段( 「年」)當前頁= 「(全部)」 隨着ActiveSheet.PivotTables( 「PivotTable5」 ).PivotFields( 「年」) .PivotItems( 「2017年」)。可見=假 .PivotItems( 「2018」)。可見=真 尾隨着 結束小組 當我跑重置過濾器和跑Macro6我收到以下錯誤: 運行時錯誤'1004': 無法獲取數據透視表類的PivotFields屬性 – sixty