国、年齢別人口、年齢別体重、年齢別慎重に関するピボットがあり、これを国毎にグラフを作成したい意と考えています。データが多いので、国毎にピボットを作成するのが面倒なので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の修正方法、若しくは別のやり方などがあれば教えてください。
エラー発生箇所のFORループを
For Each pivI In pivF("NO.").PivotItems
または
For Each pivI In ActiveSheet.PivotTables("ピボットテーブル3").PivotFields("NO.").PivotItems
と変更してみてください。
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件)