我正在使用 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
我什至使用以下方法检查了所有 PivotFields:
Debug.Print pt.Caption & " " & pt.Orientation
不在页面、行或列字段中的任何内容都显示为隐藏。没有任何内容显示为数据字段。我错过了什么吗?我设置的数据字段无关紧要,没有任何东西被标记为 xlDataField。我应该尝试另一种方式吗?我尝试使用 PivotFields.Hidden 属性,但尝试访问它时出错。