ピボットテーブル

Sheet1 にこんなデータ↓があるとします。(2行目以降は乱数で適当に作っただけ)

そして、"KEY"別に"DATA"をピボットテーブルで集計しようと QuizPivotTable マクロを作りました。

Sub QuizPivotTable()
  Dim shtA As Worksheet
  Dim rngA As Range
  Dim pvtA As PivotTable
  Dim shtP As Worksheet

  Set shtA = Worksheets("Sheet1")
  Set rngA = shtA.Range("A1").CurrentRegion
  Set shtP = Worksheets("Sheet2")
  shtP.Cells.Delete

  Set pvtA = shtA.PivotTableWizard _
      (SourceType:=xlDatabase _
      , SourceData:=rngA.Address(External:=True) _
      , TableDestination:=shtP.Range("A1"))
  pvtA.PivotFields("KEY").Orientation = xlRowField
  pvtA.AddDataField pvtA.PivotFields("DATA")
End Sub

でも、このマクロはエラーになります。マクロのどこをどう直せば、正常に動くでしょうか?(たったの1文字)
 
(Excel2003)
Excel2002 以前では、

  pvtA.AddDataField pvtA.PivotFields("DATA")

  pvtA.PivotFields("DATA").Orientation = xlDataField

にします。
 
【独断と偏見による判定】

マクロのコードを見ただけで分かった方

ピボットテーブルと VBA の超エキスパート! な〜んでそんなこと知っているの?って感じ。

いろいろ試して、1分以内に分かった方

優秀なVBAの使い手 いい勘してるね。

いろいろ試して、10分以内に分かった方

普通のVBAの使い手 大抵のことは自分で解決できるでしょ。

いろいろ試して、1時間以内に分かった方

まだまだこれからのVBAの使い手 根性あるね〜。今後に期待。

いろいろ試したけど分からない方

VBAの使い手・・・じゃないね。多分。
 
 
 
 
 
 
 
 
 
 
 
 
答えは・・・。

  pvtA.AddDataField pvtA.PivotFields("DATA")

と書いているなら、

  pvtA.AddDataField pvtA.PivotFields("DATA2")

にします。

  pvtA.PivotFields("DATA").Orientation = xlDataField

と書いているなら、

  pvtA.PivotFields("DATA2").Orientation = xlDataField

にします。
 
要は、フィールド名が"DATA"のときは、そのまま"DATA"ってのは VBA 上では使えなくて、"DATA2"にしなければならないということですね。
 
※.Excel World の 2006年6月30日 00:09 の日記をコピーしています。
http://excel.sns.fc2.com/excel/