出现“无法设置 PivotField 类的 CurrentPage 属性”错误

Rob*_*n A 7 excel vba

我正在尝试使用 VBA 根据用户从单元格条目中的选择自动更新数据透视表过滤器。我相信一切正常,直到第 11 行显示“Field.CurrentPage = NewCat”。这就是问题所在。该代码按照上一行中的说明清除了我的过滤器,但是当它到达指示它选择新数据的代码时,我收到错误消息“运行时错误 1004。无法设置 PivotField 类的 CurrentPage 属性”。

下面是我到目前为止所拥有的,我只是在寻找如何修改第 11 行,以便它选择要在数据透视表过滤器中使用的新输入。我很感激我能得到的任何帮助。我对 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
Run Code Online (Sandbox Code Playgroud)

小智 5

希望这对尝试设置 PivotField 类的“CurrentPage”属性时遇到相同“1004 错误”的人有所帮助。

对我来说,当我用“CurrentPageName”替换“CurrentPage”属性时,它终于起作用了:

With pf
  .ClearAllFilters
  MsgBox "The PivotField is: " & pf.Value
  MsgBox "The current PivotField value is: " & .CurrentPageName
  .CurrentPageName = NewCat
End With
Run Code Online (Sandbox Code Playgroud)

我的数据透视表有所谓的“页面级过滤器”: 在此处输入图像描述


Sco*_*man 0

答案只是语法问题。

如果你改变:

With pt
Field.ClearAllFilters
Field.CurrentPage = NewCat
pt.RefreshTable
End With
Run Code Online (Sandbox Code Playgroud)

到:

With Field
    .ClearAllFilters
    .CurrentPage = NewCat
End With

pt.RefreshTable
Run Code Online (Sandbox Code Playgroud)

它会起作用的。

请注意,我直接Field使用With Block.

为了进一步说明,如果将其更改为以下内容,它也将起作用:

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

pt.RefreshTable
Run Code Online (Sandbox Code Playgroud)

因此,您基本上需要直接使用对象,并且需要使用 a 来限定对象、属性、方法/等。.