|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.06.2009, 19:07 | #1 |
Пользователь
Регистрация: 27.08.2008
Сообщений: 23
|
Поймать автофильтр
Привет коллеги.
Вопрос наверное сложный... Как перехватить событие изменения автофильтра на листе? Например, процедура Change объекта Worksheet перехватывает событие изменения ячейки на листе, а мне нужно перехватить событие изменения автофильтра... |
30.06.2009, 20:40 | #2 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Цитата:
Штатными средствами Excel этого сделать не получится - событие изменения автофильтра не отлавливается. Навскидку могу предложить только один вариант - после открытия книги каждую секунду (по таймеру) запускать макрос, который будет считывать параметры автофильтра. Вот что у меня получилось: Стандартный модуль: Код:
Модуль книги: Код:
Проверял - вроде всё работает как надо. Измените параметры фильтра во втором столбце: |
|
01.07.2009, 04:55 | #3 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Чем шире угол зрения, тем он тупее.
|
|
01.07.2009, 10:14 | #4 |
Пользователь
Регистрация: 27.08.2008
Сообщений: 23
|
Спасибо за ответ
Вариант с таймером - не проходит, т.к. у меня много других макросов работает...и при переходе на другой лист он обваливается, нужно еще кучу проверок к нему дописывать |
01.07.2009, 10:20 | #5 |
Пользователь
Регистрация: 27.08.2008
Сообщений: 23
|
Такой вариант я уже писал, только к нему тоже пришлось кучу проверок цеплять, т.к. каждый пересчет запускает макрос и получается замкнутый круг....потому, что мне нужно чтобы на 2х одинаковых листах фильтры были в одном состоянии, и когда я меняю фильтр на 1м листе, запускается макрос и меняет фильтр на втором листе, что в свою очередь вызывает пересчет формул...пришлось запоминать все данные фильтров и сравнивать на входе в Calculation...
|
01.07.2009, 11:00 | #6 | ||
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Цитата:
Чем шире угол зрения, тем он тупее.
|
||
01.07.2009, 14:01 | #7 | |
Пользователь
Регистрация: 27.08.2008
Сообщений: 23
|
Цитата:
Просто хотелось бы не через Calculate это все решить, для Calculate у меня есть другая задача Я уже литературу полистал, по-моему нашел способ. Нужно написать свой класс автофильтра и можно будет отлавливать через событие класса.... Спасибо за советы |
|
04.12.2010, 21:00 | #8 |
Новичок
Джуниор
Регистрация: 25.11.2010
Сообщений: 2
|
|
04.12.2010, 21:15 | #9 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
что сделать на изменение?
какого рода изменения? в каких столбцах (перечислите по-именно)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
04.12.2010, 21:37 | #10 |
Новичок
Джуниор
Регистрация: 25.11.2010
Сообщений: 2
|
да на изменение. пример взят с этой же темы, с добавлением нескольких столбцов
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ListView: как поймать CDDS_POSTERASE в NM_CUSTOMDRAW | instance | Win Api | 0 | 12.05.2008 16:33 |
Как поймать событие в COM? | den303 | Общие вопросы Delphi | 0 | 13.09.2007 12:06 |
автофильтр | zetrix | Microsoft Office Excel | 0 | 31.10.2006 07:58 |