Ошибка при получении листа в Worksheet_PivotTableUpdate - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь синхронизировать фильтры 2 сводной таблицы (только одним способом, изменить фильтры в сводной 2, когда фильтры в сводной 1 изменены, но не опоссит).Но я получаю эту ошибку, когда пытаюсь получить лист.

st = Target.Worksheet

Excecution Time 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 голосов
/ 24 апреля 2018

Поскольку рабочий лист является объектом, вам необходимо использовать ключевое слово Set, т.е. Set st = Target.Worksheet

С другой стороны, основаны ли эти сводные таблицы на одном и том же источнике данных?Если это так, VBA не требуется: просто добавьте Slicer и подключите их, щелкнув правой кнопкой мыши Slicer и выбрав Report Connections.

...