删除报表过滤器,列标签,行标签和Pivot的值字段

时间:2016-07-24 05:50:38

标签: excel vba excel-vba pivot-table

在我的活动工作表中,我想删除活动工作表中包含的每个数据透视表中的所有字段。

到目前为止,这是我的代码:

date()

删除除value字段以外的所有字段。我在这里缺少什么?

1 个答案:

答案 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的子集,例如RowFieldsColumnFieldsPageFieldsDataFields。通过这样做,您可以实现您的目标:

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