[[20181123140320]] 『ピボットテーブルのフィルターの繰り返し』(レフ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ピボットテーブルのフィルターの繰り返し』(レフ)

ピボットテーブルで作ったデータをフィルターにかけて、出たデータをシートごと

コピーする、終わったらまた元データのシートでフィルターをかけて・・・

といったことをフィルター内にあるデータ分繰り返すコードを作りたいのですが、

「実行時エラー1004 PivotTable クラスの PivotFields プロパティを取得できません」
と表示されます。

以下のようなコードを書いたのですがどこを直したらよいでしょうか?

よろしくお願いします。

Sub Test1()

    Dim PV As PivotTable, PvtItem As PivotItem

    Set PV = Worksheets("sheet5").Range("A5").PivotTable

    For Each PvtItem In PV.PivotFields("親品目No").PivotItems
        PV.PivotFields("親品目No").CurrentPage = PvtItem.Name
        Worksheets("Sheet5").Copy Before:=Worksheets("Sheet5") 'Sheet5の前にシートをコピーする
          ActiveSheet(2).Name = Range("A6")  'コピーしたシートに名前を付ける

    Next
End Sub

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 >実行時エラー1004 PivotTable クラスの PivotFields プロパティを取得できません
 というエラーメッセージだけからの推察では、
 当該PivotTable内に「親品目No」という名のフィールドが存在しかったのではないか
 と考えられます。

 データソース範囲に「親品目No」列が含まれていないとか。
 (例えば「No」(エヌオー)のつもりが実データは「?av(記号)だったり^^;)

 以下は「ちなみに」程度のお話ですが、

 Worksheets("sheet5").Range("A5")にPivotTableが存在しなかった場合はエラーメッセージが、
 「実行時エラー1004:Range クラスの PivotTable プロパティを取得できません」
 になろうかと思います。

 また、ご提示のプロシージャは
 実行前にあらかじめ「親品目No」がレポートフィルターフィールドに配置されている前提のコードですが、
 その辺も大丈夫でしょうか?
 「親品目No」という名のフィールドそのものは間違いなく有るとしても、
 レポートフィルターフィールドにコイツが配置されていなかった場合は
 「実行時エラー1004:PivotFields クラスの CurrentPage プロパティを設定できません」
 というエラーメッセージが出てくると思います。

(白茶) 2018/11/26(月) 15:55


白茶さん回答ありがとうございます。

アドバイスに従ってよく確かめてみると「親品目No」はレポートフィールドではなく

行ラベルに入っていました。

(レフ) 2018/11/27(火) 13:06


解決しました。

ありがとうございました。
(レフ) 2018/11/27(火) 13:14


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.