在我的活动工作表中,我想删除活动工作表中包含的每个数据透视表中的所有字段。
到目前为止,这是我的代码:
date()
删除除value字段以外的所有字段。我在这里缺少什么?
答案 0 :(得分:2)
PivotFields
集合似乎排除了您仍可以引用的项目。例如。这些在即时窗口中不会出现错误:
? ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of c")
? ActiveSheet.PivotTables("PivotTable1").PivotFields("Values")
(请注意,我的数据透视表有一个名为c
的列)
但他们的代码输出不会输出:
For Each fld In pvt.PivotFields
Debug.Print fld.Name
Next fld
在枚举集合时,不清楚为什么这些都没有暴露出来。
但是,您可以直接引用PivotFields
的子集,例如RowFields
,ColumnFields
,PageFields
和DataFields
。通过这样做,您可以实现您的目标:
Option Explicit
Sub Test()
HideFields ActiveSheet.PivotTables(1)
End Sub
Sub HideFields(pvt As PivotTable)
Dim fld As Object
'rows
For Each fld In pvt.RowFields
Debug.Print fld.Name
fld.Orientation = xlHidden
Next fld
'columns
For Each fld In pvt.ColumnFields
Debug.Print fld.Name
fld.Orientation = xlHidden
Next fld
'pages
For Each fld In pvt.PageFields
Debug.Print fld.Name
fld.Orientation = xlHidden
Next fld
'data
For Each fld In pvt.DataFields
Debug.Print fld.Name
fld.Orientation = xlHidden
Next fld
End Sub