gpt4 book ai didi

vba - 使用 VBA 根据数据透视表中的源名称更改列标题

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

我正在编写代码以遍历数据透视表中的每个数据透视字段,然后根据源名称更改“自定义名称”。当我记录更改列标题时,我收到以下代码:

Range("J5").Select
ActiveSheet.PivotTables("PivotTable1").PivotFields("Man-Hours Oct-16").Caption _
= "Man-Hours Nov-16"

问题是,自定义名称每个月都在变化,所以我想引用基于 的数据透视字段来源 名称,而不是标题。我编写了一个代码,成功地遍历了每个数据透视字段并标识了源,但是,当它尝试修改标题时,我收到了一条错误消息:
Dim CurrentDate As Date
Dim CurrentMonth As String
Dim CurrentYear As String
Dim pf as PivotField

CurrentDate = Range("CurrentDate")
CurrentMonth = Format(CurrentDate, "MMM")
CurrentYear = Format(CurrentDate, "YY")

For Each pf In PivotSheet.PivotTables("PivotTable1").PivotFields
'Total Forecast
If pf.SourceName = "Man-Hours 0" Then
pf.Caption = "Man-Hours " & CurrentMonth & "-" & CurrentYear
ElseIf pf = "Cost ($$) 0" Then
pf.Caption = "Cost ($$) " & CurrentMonth & "-" & CurrentYear
End If
Next pf

上面的代码在 pf.Caption 上收到错误:“运行时错误 '5': Invalid procedure call or argument”。线。

我也尝试过使用 pf.LabelRange同样,我收到错误:“运行时错误'1004':无法获取 PivotField 类的 LabelRange 属性”

我一直在寻找解决方案。我没有用数据透视表编写太多代码,所以我不确定是否应该使用数据透视表?我发现的所有更改列标题的代码都是基于先前的标题名称。

最佳答案

修改了几次代码后,我解决了这个问题。只是张贴以防万一有人有类似的问题。而不是循环通过 PivotFields我应该循环浏览DataFields .以下修改后的代码有效:

Dim CurrentDate As Date
Dim CurrentMonth As String
Dim CurrentYear As String
Dim pf as PivotField

CurrentDate = Range("CurrentDate")
CurrentMonth = Format(CurrentDate, "MMM")
CurrentYear = Format(CurrentDate, "YY")

For Each pf In PivotSheet.PivotTables("PivotTable1").DataFields
'Total Forecast
If pf.SourceName = "Man-Hours 0" Then
pf.Caption = "Man-Hours " & CurrentMonth & "-" & CurrentYear
ElseIf pf.SourceName = "Cost ($$) 0" Then
pf.Caption = "Cost ($$) " & CurrentMonth & "-" & CurrentYear
End If
Next pf

如果有人可以评论为什么 DataFields工作而不是 PivotFields ,我很想知道!

关于vba - 使用 VBA 根据数据透视表中的源名称更改列标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40701261/

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