Я создаю панель управления, в которой 3 ползунка управляют 10 сводными таблицами на втором листе данных. У меня также есть карта, опирающаяся на сводные данные. Это заполняется макросом, который должен запускаться каждый раз, когда делается выбор на слайсере. Прочитав старые вопросы и другие форумы, я использовал следующий код, размещенный на листе, который содержит сводки.

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

Application.EnableEvents = False

Call UpdateMaps

Application.EnableEvents = True

End Sub

При этом изменения в ползунках ли активировать макрос для обновления карты, но , несмотря на переключени EnableEvents, это вызывает в 10 раз; один раз для каждой из сводных таблиц и так очень медленно. Я что-то пропустил? Есть ли способ иметь только один запуск макроса, который будет иметь место после того, как все сводные таблицы закончат обновление из выборок Slicer?

1 ответ1

0

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

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
If Target.Name = "PivotTable1" then  UpdateMaps
End Sub

Не беспокойтесь о выключении событий. Измените "PivotTable1" на имя одной из ваших сводных таблиц (если у вас в рабочей книге еще нет "PivotTable1")

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .