Создать процедуру для изменения всех полей страницы. Этот цикл проходит по всем рабочим листам в рабочей книге, и, если на рабочем столе есть сводная таблица, он изменяет поле страницы в соответствии с полем страницы в сводной таблице, передаваемом в подпункт.
Sub ChangePage(pt As PivotTable)
Dim strPageValue As String
Dim wks As Worksheet
Dim ptUpdate As PivotTable
Application.ScreenUpdating = False
Application.EnableEvents = False
strPageValue = pt.PivotFields("Area").CurrentPage
For Each wks In ThisWorkbook.Worksheets
On Error Resume Next
Set ptUpdate = wks.PivotTables(1)
If Err.Number = 0 Then
On Error GoTo 0
wks.PivotTables(1).PivotFields("Area").ClearAllFilters
wks.PivotTables(1).PivotFields("Area").CurrentPage = strPageValue
End If
Err.Clear
Next wks
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Затем поместите вызов этой процедуры в самом коде листа и передайте измененную сводную таблицу:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Call ChangePage(Target)
End Sub
Измените имя поля сводки с «Площадь» на нужное вам поле страницы, например «US_Region».
Это может не подходить, если люди часто меняют структуру ваших сводных таблиц другими способами, так как это будет срабатывать при каждом изменении сводной таблицы, в том числе при ее обновлении. Это также выдаст ошибку, если пользователи удалят указанное поле страницы.
Если сводные таблицы статичны, это может подойти.