在Worksheet_PivotTableUpdate中获取工作表时出错

时间:2018-04-24 15:00:18

标签: vba pivot-table

我试图同步2个数据透视表的过滤器(只是从一种方式,当pivot1中的过滤器被更改但不是opossite时,更改pivot2中的过滤器)。 但是当我尝试获取表单时出现此错误。

  

st = Target.Worksheet

     

超时时间Erro 438

     

对象不支持此属性或方法

此工作表中的数据透视图可能会在事件的VBA代码中更改" WorkbookOpen"因此,当此工作表处于活动状态时,它可能无法运行,这是代码:

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

If Target.Name <> "pivot1" Then Exit Sub

Dim st As Worksheet
Dim pivot1 As PivotTable
Dim pivot2 As PivotTable

Set st = Target.Worksheet
Set pivot2 = st.PivotTables("pivot2")
Set pivot1 = st.PivotTables("pivot1")

For Each pf In pivot1.PageFields
    If pf.Name <> "Filter1" Then
        pivot2.PageFields(pf.Name).CurrentPage = pf.CurrentPage
    End If
Next

End Sub

1 个答案:

答案 0 :(得分:0)

由于工作表是对象,因此您需要使用Set关键字,即Set st = Target.Worksheet

另外请注意,这些数据透视表是否基于相同的数据源?如果是这样,则不需要VBA:只需添加切片器并通过右键单击切片器并选择报告连接来连接它们。