• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:変数にするとエラーになる理由は?)

変数にするとエラーになる理由は?

このQ&Aのポイント
  • エクセル2007のピボットテーブルをvbaで操作しています。vbaの仕組みについて分からないので教えてください。
  • ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("年").PivotItems("2008").ShowDetail = True だとエラーにならずにピボットテーブルが開かれるのに、Dim intYear As Long intYear = 2008 ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("年").PivotItems(intYear).ShowDetail = True だとエラーになってしまいます。
  • エラー内容は実行時エラー '1004': PivotTableクラスのPivotFieldsプロパティを取得できません。変数にするとエラーになる理由は何でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

ヘルプ曰く、変数の型にご注意、、、 expression.PivotItems(Index) Index 省略可能です。バリアント型(Variant)の値を使用します。アイテムの名前、またはインデックス番号を指定します。

fxdhhdnixhzdx
質問者

お礼

どうもありがとうございました。

その他の回答 (3)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

intYear = 2008 ….PivotItems(intYear).… のように書いていると、該当のピボットテーブルの「2008番」目のピボットアイテムを探しに行くからです。 2008番じゃなく「2008という名前」のアイテムを操作するために dim strYear as string strYear = "2008" ….PivotItems(strYear).… のような段取りが必要ですね。

fxdhhdnixhzdx
質問者

お礼

どうもありがとうございました。

  • jaham
  • ベストアンサー率21% (215/1015)
回答No.2

PivotItems("2008") と PivotItems(intYear) の違いが理解できていないからです なぜ "2008" としているかを考えましょう

fxdhhdnixhzdx
質問者

お礼

どうもありがとうございました。

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.1

"2008"が文字で、intYearが数字だから?かな

fxdhhdnixhzdx
質問者

お礼

どうもありがとうございました。

関連するQ&A