Есть ли способ определить, когда изменяется сводная таблица, устанавливаются фильтры в VBA?

У меня есть макрос, который я хотел бы автоматически запускать, когда пользователь изменяет фильтры сводной таблицы.

1
KingBugAndTheCodeWizard 28 Май 2019 в 15:17

2 ответа

Лучший ответ

Пытаться:

Option Explicit

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

    'Check if is the right pivot changed
    If Target.Name = "PivotTable1" Then
        ' some code here
    End If

End Sub
0
Error 1004 28 Май 2019 в 12:32

Другой ответ почти элегантен, но событие PivotTableUpdate не вызывается, если некоторые заголовки изменены:

screenshot of pivot table captions

Если вам нужно событие для любых изменений в сводной таблице, используйте вместо этого в модуле кода рабочей таблицы следующее:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.PivotTables(1).TableRange2) Is Nothing Then
        MsgBox "Pivot's TableRange2 Changed"
    End If
End Sub
0
Asger 29 Май 2019 в 10:35