【发布时间】:2013-03-12 16:53:45
【问题描述】:
我正在使用 Excel 2010 并编写一个 VBA 函数来自动格式化数据透视表中的各种指标,因为它被用户更改(以便在他们添加/删除字段时保留格式)。我正在循环通过 PivotFields 集合来执行此操作。为了更改格式,数据透视表需要在数据透视表中可见,否则会引发错误。所以我想我可以只检查 PivotField 的 Orientation 属性,并且只处理那些设置为 xlDataField 的 Orientation。
但是,当我运行该函数时,所有数据字段都显示 xlHidden 的方向,即使它们在数据透视表中可见。
我只是在做这样一个简单的功能
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim pt As PivotField
For Each pt In ActiveSheet.PivotTables("PivotTable1").PivotFields
If VBA.InStr(1, pt.Caption, "COMP", vbTextCompare) And pt.Orientation = xlDataField Then
pt.Function = xlAverage
pt.NumberFormat = "0.00%"
End If
Next pt
End Sub
我什至使用以下方法检查了所有数据透视字段:
Debug.Print pt.Caption & " " & pt.Orientation
任何不在页面、行或列字段中的内容都显示为隐藏。没有任何内容显示为数据字段。我错过了什么吗?我设置为数据字段的内容无关紧要,没有任何内容被标记为 xlDataField。我应该尝试另一种方式吗?我尝试使用 PivotFields.Hidden 属性,但尝试访问它时出错。
【问题讨论】:
标签: vba excel excel-2010 pivot-table