プロが教える店舗&オフィスのセキュリティ対策術

エクセル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プロパティを取得できません。
です。

変数にするとエラーになる理由は何でしょうか?

A 回答 (4件)

ヘルプ曰く、変数の型にご注意、、、


expression.PivotItems(Index)
Index
省略可能です。バリアント型(Variant)の値を使用します。アイテムの名前、またはインデックス番号を指定します。
    • good
    • 1
この回答へのお礼

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

お礼日時:2013/01/19 10:47

intYear = 2008


….PivotItems(intYear).…

のように書いていると、該当のピボットテーブルの「2008番」目のピボットアイテムを探しに行くからです。

2008番じゃなく「2008という名前」のアイテムを操作するために
dim strYear as string
strYear = "2008"
….PivotItems(strYear).…

のような段取りが必要ですね。
    • good
    • 1
この回答へのお礼

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

お礼日時:2013/01/19 10:47

PivotItems("2008")



PivotItems(intYear)

の違いが理解できていないからです
なぜ "2008" としているかを考えましょう
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/01/19 10:47

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2013/01/19 10:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています