Excel VBA Filter Change обработчик события

Вопрос:Есть ли способ выяснить, когда пользователь внес изменения в фильтр листов? Другими словами, есть ли какой-либо обработчик change_filter event? Лучший ответ: Да. Из этой статьи я разместил на другом форуме 1. Фиктивная рабочая таблица добавляется с одной формулой SUBTOTAL в A1, указывающей на диапазон, отфильтрованный на основном листе. 2. A Worksheet_Calculate() Событие добавляется в фиктивный

Вопрос:

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

Другими словами, есть ли какой-либо обработчик change_filter event?

Лучший ответ:

Да.

Из этой статьи я разместил на другом форуме

1. Фиктивная рабочая таблица добавляется с одной формулой SUBTOTAL в A1, указывающей на диапазон, отфильтрованный на основном листе.
 2. A Worksheet_Calculate() Событие добавляется в фиктивный WorkSheet, это событие срабатывает, когда формула SUBTOTAL обновляется при изменении фильтра.

‘Dummy sheet code Private Sub Worksheet_Calculate() ‘Dummy Sheet has recalculated MsgBox «Your list has been filtered» End Sub

Питание для ручного расчета

Обратите внимание, что в приведенном выше подходе требуется, чтобы в калькуляторе рабочей книги задавался либо автоматический (xlCalculationAutomatic в VBA), либо автоматический, кроме таблиц (xlCalculationSemiAutomatic). Если для параметра “Расчет” задано значение “Вручную” (xlCalculationManual), для кодирования рабочей книги необходимо дополнительное кодирование, чтобы только “w320” WorkSheet был настроен на автоматическое вычисление, все остальные листы, в которых вычисление отключено.

Существует редко используемое свойство WorkSheet, EnableCalculation, которое может быть установлено с помощью редактора Visual Basic на True или False. Значение по умолчанию – True, если для него установлено значение False, рабочий лист не будет вычислять.

Свойство EnableCalculation недоступно для обычных параметров меню Excel или ленты – так как в стороне это может быть полезным трюком для людей, которые ищут надежные модели Excel, намеренно удерживая ключевые листы от пересчета.

  1. Добавьте событие Workbook_Open, чтобы установить EnableCalculation property всех листов, отличных от “dummy”, на False.
  2. Запустите книгу в режиме расчета.
Оцените статью
Добавить комментарий