获取“无法设置PivotField类的CurrentPage属性”错误

我试图使用VBA自动更新数据透视表filter基于用户的select单元格条目。 我相信一切都正常工作,直到第11行说“Field.CurrentPage = NewCat”。 这是问题所在。 该代码按照上一行中的说明清除我的filter,但是当它到达指示它select新数据的代码时,将出现“运行时错误1004”的错误。无法设置PivotField类的CurrentPage属性。

下面是我到目前为止,我只是看看如何修改行11,所以它select新的input在透视表filter中使用。 我感谢任何帮助,我可以得到这一点。 我对vba非常陌生,并为此付出了太多的努力!

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target, Range("C3:C4")) Is Nothing Then Exit Sub Dim pt As PivotTable Dim Field As PivotField Dim NewCat As String Set pt = Worksheets("Pivot").PivotTables("PivotTable1") Set Field = pt.PivotFields("[Range].[Site].[Site]") NewCat = Worksheets("Interface").Range("C3").Value With pt Field.ClearAllFilters Field.CurrentPage = NewCat pt.RefreshTable End With End Sub 

答案只是语法问题。

如果你改变:

 With pt Field.ClearAllFilters Field.CurrentPage = NewCat pt.RefreshTable End With 

至:

 With Field .ClearAllFilters .CurrentPage = NewCat End With pt.RefreshTable 

它会工作。

请注意,我直接在With BlockField中工作。

为了进一步说明,如果将其更改为以下内容,则也可以使用:

 With pt.PivotFields(Field.Name) .ClearAllFilters .CurrentPage = NewCat End With pt.RefreshTable 

所以,你基本上需要直接处理对象,你需要用a来限定对象,属性,方法等等.

我使用下面的代码,并更改字段的名称范围值

 With ActiveSheet.PivotTables("pvtTest").PivotFields("Week") .ClearAllFilters .PivotFilters.Add Type:=xlCaptionEquals, Value1:=ActiveSheet.Range("K1").Value End With 

[1] http://www.ozgrid.com/forum/showthread.php?t=169855