こんにちは、わたあめです。今回はExcel VBAでピボットテーブルについての記事です。ピボットテーブルにVBAでフィルタをかけたところ、以下のようなメッセージが出ました。
このエラーの原因は?どうすれば?という事をまとめていきます。それでは、いってみましょう。
原因1:集計フィールドに指定するフィールド名が存在しない
一つ目の原因として、VBAマクロで指定しているピボットテーブルのフィールドが存在しないフィールド名を指定しているからでした。
例えば、集計フィールドを定義して、データフィールドに追加するというマクロ例をみてみましょう。「フィールド名1」と「フィールド名2」があるピボットテーブルを操作する際、フィールド名を「フィールド名1」と全角であるべきところを半角で指定してしまったり、「フィールド1」と"名"の1文字を抜かしてしまったり。
' 集計フィールドを作成(フィールド名1とフィールド名2の和)、データフィールドに追加する
ActiveSheet.PivotTables("ピボットテーブル名").CaculatedFields.Add "計", "=フィールド名1+フィールド2", True
ActiveSheet.PivotTables("ピボットテーブル名").PivotFields("計").Orientation = xlDataField
上記マクロだと実行時エラー'1004'となりますね。これを、正しいフィールド名にしたマクロが以下のマクロです。
' 集計フィールドを作成(フィールド名1とフィールド名2の和)、データフィールドに追加する
ActiveSheet.PivotTables("ピボットテーブル名").CaculatedFields.Add "計", "=フィールド名1+フィールド名2", True
ActiveSheet.PivotTables("ピボットテーブル名").PivotFields("計").Orientation = xlDataField
原因2:フィールド名に特殊な文字列が含まれている
同じエラーが別の原因でも出ました。それは、フィールド名の文字列に、特別扱いしなくてはならない文字が入っている場合です。私の場合、フィールド名に括弧"("や")"が含まれていたことが原因でした。
「フィールド名2(備考)」という括弧が含まれるフィールド名を使っている場合、以下のようにそのまま扱ってしまうと、実行時エラー'1004'がでます。
' 集計フィールドを作成(フィールド名1とフィールド名2の和)、データフィールドに追加する
ActiveSheet.PivotTables("ピボットテーブル名").CaculatedFields.Add "計", "=フィールド名1+フィールド名2(備考)", True
ActiveSheet.PivotTables("ピボットテーブル名").PivotFields("計").Orientation = xlDataField
括弧などの特別な文字列がある場合、フィールド名をシングルクォーテーション「'」で囲ってあげるとうまくいきます。
' 集計フィールドを作成(フィールド名1とフィールド名2の和)、データフィールドに追加する
ActiveSheet.PivotTables("ピボットテーブル名").CaculatedFields.Add "計", "=フィールド名1+'フィールド名2(備考)'", True
ActiveSheet.PivotTables("ピボットテーブル名").PivotFields("計").Orientation = xlDataField
上記のように「フィールド名2(備考)」を「'フィールド名2(備考)'」とシングルクォーテーションで囲って扱います。
さいごに
いかがだったでしょうか。他の原因でも同じエラーになることもあるのでしょうが、私が出会った原因2つを紹介させていただきました。マクロ、うまく動くようになりますように。それでは、また!