VBA:DataBodyRange未定义整个数据透视表

时间:2017-07-13 07:45:32

标签: excel excel-vba range pivot-table vba

我对Property DataBodyRange

有疑问

我有一个简单的数据透视表(D列到F列的范围),有3列:

Dim PvtSht As Worksheet
Dim pvtFld As PivotField
Dim pvt As PivotTable
Dim i As Long
Dim data_fields As Variant

data_fields = Array("ACCNTNUM", "ACCNTNAME", "PRICE")
PvtSht.PivotTables("PivotTable1").RowAxisLayout xlTabularRow

For i = 0 To UBound(data_fields)
  Set pvtFld = pvt.PivotFields(data_fields(i))
  pvtFld.Orientation = xlRowField
  PvtSht.PivotTables("PivotTable1").PivotFields(data_fields(i)).Subtotals(1) = False
  PvtSht.PivotTables("PivotTable1").ColumnGrand = False
Next

最终,我想改变表的格式。因此,我需要DataBodyRange,以便VBA知道需要应用更改的位置。但是当我检查这个DataBodyRange时:

Debug.Print pvt.DataBodyRange.Addres

它只给出了最后一列(F)的范围。一旦我删除了一列,它仍然给我最后一列(E)的范围。

数据透视表从这里开始

Set pvt = PvtSht.PivotTables.Add(PivotCache:=pvtCache, TableDestination:=PvtSht.Range("D3"), TableName:="PivotTable1")

所以我的问题是,如何更改DataBodyRange以便定义整个表(D:F),而不仅仅是一列(F)。

如果其中任何一项不够清楚,请告诉我。

0 个答案:

没有答案