【发布时间】:2017-07-20 02:00:17
【问题描述】:
我有一个 Excel 工作簿,其中包含多个工作表,每个工作表上有多个数据透视表。我正在尝试遍历每个数据透视表并将其“报告函数”过滤器更改为从列表框中选择的用户指定值。所有数据透视表都有“报表功能”过滤器。
我有大约 50 个数据透视表,并且代码成功地更改了过滤器,除了大约 8 个数据透视表。这 8 个数据透视表的过滤器不会改变;而是返回错误“错误 1004:无法获取 PivotField 类的 CurrentPage 属性”。
为什么这段代码会为少数数据透视表返回此错误?
奇怪的是,返回此错误的数据透视表似乎完全相同。
Sub ChangePivotFilter(str As String)
Dim ws As Excel.Worksheet
Dim aWB As Excel.Workbook
Dim myPivot As Excel.PivotTable
Dim myPivotField As Excel.PivotField
Set aWB = ActiveWorkbook
For Each ws In aWB.Worksheets
For Each myPivot In ws.PivotTables
Set myPivotField = Nothing
On Error Resume Next
Set myPivotField = myPivot.PivotFields("Report Function")
myPivotField.CurrentPage = str
Next myPivot
Next ws
End Sub
非常感谢任何帮助!
【问题讨论】:
-
您确定有任何结果与“报告功能”
PivotField的str匹配吗?在所有表格中? -
即使您有 On Error Resume Next,您是否也会收到该错误?
-
@Shai Rado 是的,所有数据透视表的报告函数字段中都有 str 的匹配项。
-
@Sam 我不是,不。我之前在返回错误的代码中放置了一个错误检查行。使用“On Error Resume Next”,代码不会显示错误。