VBA-“错误1004:无法获取PivotField类的CurrentPage属性”

时间:2017-07-20 02:00:17

标签: excel vba excel-vba

我有一个包含多个工作表的Excel工作簿,每个工作表上都有多个数据透视表。我正在尝试遍历每个数据透视表并将其“报表功能”过滤器更改为从列表框中选择的用户指定值。所有数据透视表都有“报告功能”过滤器。

我有大约50个数据透视表,并且代码成功地更改了除了大约8个支点之外的所有过滤器。那8个数据透视表的滤波器不会改变;而是返回错误“错误1004:无法获取PivotField类的CurrentPage属性”。

wHY是否为少量数据透视表返回此错误代码?

奇怪的是,它似乎是返回此错误的完全相同的数据透视表。

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

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

如果数据透视表实际上不在"页面"分配给CurrentPage或从myPivotField.Orientation = xlPageField 读取将失败(即"过滤器")在其数据透视表上:

PivotField in page

您可以通过编程方式将数据透视表发送到"页面"通过将其Orientation属性设置为xlPageField,如下所示:

if(m > n){
    int temp = n;
    n = m;
    m = temp;
}