我有一个数据透视表,其中包含" CoB日期"字段如图所示
我正在尝试创建一个宏,根据用户输入自动更改日期
我写了以下宏代码。但它显示错误:
无法获取数据透视表类的PivotFields属性
任何人都可以帮我吗? 注意:假设日期格式不是问题
代码:
Sub My_macro()
Dim num as String
num = InputBox(Prompt:="Date", Title:="ENTER DATE")
Sheets("Sheet1").PivotTables("PivotTable1") _
.PivotFields("CoB Date").CurrentPage = num
End Sub
答案 0 :(得分:2)
作为评论,完全相同的代码在我的结尾。
Sub My_macro()
Dim num As String
num = InputBox(Prompt:="Date", Title:="ENTER DATE")
Sheets("Sheet1").PivotTables("PivotTable1") _
.PivotFields("CoB Date").CurrentPage = num
End Sub
假设您有这样的数据:
运行宏时,它会提示输入日期:
然后按下确定后,结果将是:
请注意,我们假设输入日期不是问题
所以我们使用了一个简单的数据来消除它,所以你的代码可以工作
您正在处理的可能问题是日期是否有时间戳
根据您的屏幕截图,情况就是如此。
答案 1 :(得分:1)
我遇到了与#34相同的问题;无法获得数据透视表类的PivotFields属性"。
我发现虽然我的数据透视表是该工作表上的唯一一个(或者在工作簿中),但它不是" PivotTable1"。它是" PivotTable4"最有可能的原因是我之前创建并删除了其他3个。
要查找数据透视表的名称,并根据需要进行更改,只需右键单击数据透视表中的任意位置,然后选择"数据透视表选项"。您将看到"数据透视表名称"在顶部,可以从那里重命名。
此外,在尝试更改其中一个过滤器时,我遇到了同样的错误问题。当我使用:
引用该字段时Sheets("mySheetName").PivotTables("PivotTable4").PivotFields("myFieldName")
它会抛出与上面相同的错误。事实证明我的字段名称末尾有3个空格。我发现这个的方法可能是循环遍历显示每个MsgBox的所有过滤器字段,直到找到它为止。以下代码是我如何做到这一点,并希望可以帮助有类似问题的人:
Dim pt As PivotTable
Dim pf As PivotField
Set pt = Sheets("mySheetName").PivotTables("PivotTable4")
For Each pf In pt.PivotFields
MsgBox ("FieldName: [" & pf.Name & "] with a length of: " & Len(pf.Name) & " and a trimmed length of: " & Len(Trim(pf.Name)))
Next pf
希望这有助于某人!