2016-08-03 6 views
0

以下のコードを使用して、各PivotFieldに存在するピボットアイテムとその表示ステータスを印刷しました。レポートフィルタに5つのピボットフィールドがあります。VBAを使用してレポートフィルタに存在するピボットフィールドのピボットアイテムにアクセスする方法

問題は、ピボットフィールドの番号を正しく取得していることです。しかし、ピボットアイテムの数になると、ピボットフィールドごとに0が返されます。実際には、各フィールドには多くのアイテムがあります。私は目に見えるアイテムを印刷しようとはしていない。しかし、アイテムとその表示可能なステータス。

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

Set pt = Sheets("Reasons").PivotTables("PivotFields") 
For Each pf In pt.PageFields 
    For Each pi In pf.PivotItems 
     Debug.Print pi.Name & " : " & pi.Visible 
    Next 
Next 
+0

Pramodさんを使用することはできません場合に、効率的にあなたの同期のピボットテーブルをすることができます下のリンクで私のコードを参照してください:あなたは後にしている結果に、もう少し詳しく説明することができます?他の投稿では、目に見えるアイテムの配列が必要だと言います。これもここのケースですか?興味のないところでは、配列で何をするつもりですか?私はいくつかのアイデアを持っていますが、私があなたの究極の意図を知っていれば助けになります – jeffreyweir

+0

Jeffにお礼をありがとう。私は自分のレポートフィルタに5つのピボットフィールドを持っており、ユーザーはそれらのいずれかからアイテムを選択することができます。 1つのフィルターで選択するたびに、可視アイテムを配列に集め、その配列をVisibleItemsListメソッドに渡して、同じ変更を他のピボットテーブルに反映させたいと思います。簡単に言えば、私はピボットフィールドの項目が選択されるたびに、あるピボットテーブルのフィルタを他のピボットテーブルに適用したいと考えています。 – Pramod

+0

そして、私はあなたが2007年Excelを使用していますか? – jeffreyweir

答えて

1
+0

恐ろしいジェフ。単に素晴らしい。私は過去1週間これを行うのに苦労していたし、あなたは目の瞬きでそれを解決する。私はサンプルワークブックをダウンロードし、必要に応じて修正しました。完全に動作しています。 – Pramod

+0

Cool。助けてくれてうれしい – jeffreyweir

+0

私はジェフを疑う。私は1つのフィールドにフィルターを適用すると、他のすべてのフィールドの状況もコピーされていることがわかります。変更したフィールドにのみフィルタを適用できますか? – Pramod

関連する問題