2017-07-20 252 views
0

我有一个Excel工作簿,其中包含多个工作表,每个工作表上有多个数据透视表。我试图遍历每个数据透视表并将其“报告功能”过滤器更改为从列表框中选择的用户指定值。所有数据透视表都有“报告功能”过滤器。VBA-“错误1004:无法获取PivotField类的CurrentPage属性”

我有大约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 

任何帮助非常感谢!

+0

你肯定有任何的'str'为“报告功能”'PivotField'匹配的结果?在所有表格中? –

+0

即使您有错误恢复下一步,您是否收到该错误? – Sam

+0

@Shai Rado是的,在所有数据透视表的报告功能字段中都有str的匹配。 – mark

回答

0

分配,或者如果透视字段是不是身体中的“页面”(即一个“过滤器”)在它的数据透视表CurrentPage读书会失败:

PivotField in page

您可以编程方式发送透视字段到“页”通过设置它的Orientation属性xlPageField,如下所示:

myPivotField.Orientation = xlPageField 
相关问题