人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBAとピボットテーブルに関する質問です。
国、年齢別人口、年齢別体重、年齢別慎重に関するピボットがあり、これを国毎にグラフを作成したい意と考えています。データが多いので、国毎にピボットを作成するのが面倒なのでVBAで解決しようとしましたが、手が出ません。

今回はマクロ記録を有効して、ピボットテーブル、グラフをコピーし、それを同じシートにペースト。国別の切り口を日本からアメリカに変更して、グラフも連動させて変更しようとしましたが、できませんでした。

その際に作成したのが下記です。PivotItems で、実行エラー '1004'が出力されます。

Dim pivF As PivotField, pivI As PivotItem
Set pivF = ActiveSheet.PivotTables("ピボットテーブル3").PivotFields("NO.")

For i = 1 To 50
Rows("1:28").Select
Selection.Copy
j = i * 40
Range("A" & j).Select
ActiveSheet.Paste
For Each pivI In pivF.PivotItems
Select Case pivI.Caption
Case i
pivI.Visible = True
Case Else
pivI.Visible = False
End Select
Next

Next i

End Sub

そもそもの手順が悪いのですが、VBAの修正方法、若しくは別のやり方などがあれば教えてください。


●質問者: y.n2che
●カテゴリ:コンピュータ 科学・統計資料
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● oil999
●250ポイント

エラー発生箇所のFORループを
For Each pivI In pivF("NO.").PivotItems
または
For Each pivI In ActiveSheet.PivotTables("ピボットテーブル3").PivotFields("NO.").PivotItems
と変更してみてください。


2 ● うぃんど
●250ポイント

for eachで回している最中に「全て表示しない」という状況になってしまうため、
「PivotItemクラスのVisibleプロパティを設定できません」と言われてしまうのでしょう

対策例
ループに入る前に Visible = True にしておく

pivF.PivotItems(i).Visible = True
For Each pivI In pivF.PivotItems
 If pivI.Caption <> i Then pivI.Visible = False
Next
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ