По работе мне приходится составлять и анализировать большие таблицы, поэтому с целью упрощения процедуры использования автофильтров я уже давно написал для личного употребления несколько макросов, а среди них и эти, значительно упрощающие работу с автофильтром Excel.
На листе "Фильтр-Ячейка" прилагаемого примера образец для фильтрации данных в столбцах A...D (1...4) по критерию "содержит" вводится в ячейки A1...D4. После ввода данных и выхода из каждой из этих ячеек в соответствующем столбце включается автофильтр.
Всё очень просто и достаточно удобно. Но не хотелось бы каждый раз лезть в код чтобы добавить фильтр по какому-либо ещё столбцу...
Вот я и подумал, что удобно было бы помечать ячейки в заголовке, в которых записываются условия фильтрации, а программа уже сама бы определяла, нужно по изменению помеченной ячейки фильтровать или нет...
Самое простое пришедшее в голову решение - наставить в требуемые ячейки какие-нибудь мелкие элементы управления, например маленькие текст-боксы, как сделано в примере TextBox1....TextBox4. А программа тогда сама будет определять, является ли вводимый в ячейки текст критерием фильтрации или нет по факту наличия/отсутствия в ней элемента управления. Именно элементы управления, а не автофигуры я решил использовать для того, чтобы их не так просто было случайным неаккуратным движением мышки переместить/удалить, а только в режиме конструктора.
Затык в доработке кода у меня настал в том, что я никак не могу получить информацию о том, есть в ячейке элемент управления или нет?
На листе же "Фильтр-Текстбокс" для ввода условий фильтрации используются текст-боксы. Преимущества перед вводом в ячейки - данные фильтруются по мере ввода символов. Есть три варианта реализации. Подробности - в комментариях.
Очень удобная заготовка. Только опять же хотелось бы доработать. Идея доработки в том, что номер столбца для фильтрации должен определяться сам по положению текст-бокса, а не исправлениями кода программы.
Проблема при попытке доработки возникла схожая с предыдущей: как определить адрес (номер столбца) ячейки, на которой расположен элемент управления?
На листе "Фильтр-Ячейка" прилагаемого примера образец для фильтрации данных в столбцах A...D (1...4) по критерию "содержит" вводится в ячейки A1...D4. После ввода данных и выхода из каждой из этих ячеек в соответствующем столбце включается автофильтр.
Всё очень просто и достаточно удобно. Но не хотелось бы каждый раз лезть в код чтобы добавить фильтр по какому-либо ещё столбцу...
Вот я и подумал, что удобно было бы помечать ячейки в заголовке, в которых записываются условия фильтрации, а программа уже сама бы определяла, нужно по изменению помеченной ячейки фильтровать или нет...
Самое простое пришедшее в голову решение - наставить в требуемые ячейки какие-нибудь мелкие элементы управления, например маленькие текст-боксы, как сделано в примере TextBox1....TextBox4. А программа тогда сама будет определять, является ли вводимый в ячейки текст критерием фильтрации или нет по факту наличия/отсутствия в ней элемента управления. Именно элементы управления, а не автофигуры я решил использовать для того, чтобы их не так просто было случайным неаккуратным движением мышки переместить/удалить, а только в режиме конструктора.
Затык в доработке кода у меня настал в том, что я никак не могу получить информацию о том, есть в ячейке элемент управления или нет?
На листе же "Фильтр-Текстбокс" для ввода условий фильтрации используются текст-боксы. Преимущества перед вводом в ячейки - данные фильтруются по мере ввода символов. Есть три варианта реализации. Подробности - в комментариях.
Очень удобная заготовка. Только опять же хотелось бы доработать. Идея доработки в том, что номер столбца для фильтрации должен определяться сам по положению текст-бокса, а не исправлениями кода программы.
Проблема при попытке доработки возникла схожая с предыдущей: как определить адрес (номер столбца) ячейки, на которой расположен элемент управления?