gpt4 book ai didi

vba - Excel PivotField 方向错误?

转载 作者:行者123 更新时间:2023-12-04 20:18:22 25 4
gpt4 key购买 nike

我正在使用 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 属性,但尝试访问它时出错。

最佳答案

而不是循环 PivotFields你应该遍历DataFields那些在xlDataField方向。

如果您需要检查是否有任何之前的循环,只需测试:

If ActiveSheet.PivotTables(1).DataFields.Count > 0 Then 

如果数据方向没有任何内容,则返回 0。

已编辑:
还有一件事-不要忘记关闭事件,因为您的程序会导致 PT 更改再次触发该事件。所以, Application.EnableEvents = False在开头和 =True到底。

关于vba - Excel PivotField 方向错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15577023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com