Как определить, изменились ли фильтры на листе? - PullRequest
4 голосов
/ 01 сентября 2009

В проекте книги Excel, как мы можем определить, обновляются ли фильтры на каком-либо листе?

Ответы [ 2 ]

2 голосов
/ 01 сентября 2009

Убедитесь, что у вас есть формула (например, COUNT ), которая включает в себя весь столбец данных. В случае таблицы включите строку Итого .

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

Private Sub Worksheet_Calculate()

 MsgBox "Calculation"

End Sub

Ваш лист должен быть спроектирован так, чтобы иметь только данные, в противном случае потребуется код, чтобы определить, не произошло ли событие расчета на листе из-за изменения фильтра.

Вам нужно будет добавить код, чтобы подобрать значения фильтра. Сосредоточьтесь на Filter учениках класса, таких как Citeria1, Criteria2, Operator, On и т. Д.

1 голос
/ 18 декабря 2012

Мой случай был базой данных Excel. Я создал метку, указывающую «количество отфильтрованных элементов» или «количество экземпляров собрания», чтобы при фильтрации с использованием раскрывающихся фильтров эта метка обновлялась. Я не нашел ни одного события "смены фильтра". Я попробовал метод, описанный выше, как показано ниже:

  • Выберите ячейку на вашем листе, которую вы не хотите использовать
  • Установите формулу ячейки на «= count (B: B)» или «= counta (C: C)» или любую формулу, которая зависит от всего столбца. Убедитесь, что ячейка находится не в том же столбце
  • Установите тип формата этой вспомогательной ячейки на «пользовательский» и установите формат на «;;;» поэтому содержимое ячейки будет невидимым
  • В VBA используйте событие «Расчет листа» для выполнения кода

Private Sub Worksheet_Calculate ()

'Команды и действия, которые вы хотите выполнить при смене фильтра

End Sub

  • Теперь все готово
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...