|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.07.2009, 10:29 | #1 |
Пользователь
Регистрация: 22.05.2008
Сообщений: 82
|
Макрос активации ячейки по выбору в фильтре
Здравствуйте!
В, допустим, второй колонке таблицы включен фильтр. По выбору в нем нужного значения остаются строки с таким же значением, остальные скрываются. И мне нужно, чтобы активизировалась ячейка в первой строчке из отфильтрованных записей, но в том же столбце, в каком была прежде. Генератор кода дает конкретное значение фильтра: Selection.AutoFilter Field:=1, Criteria1:="441" А как конкретное значение заменить на любое выбираемое, ума не приложу, туплю видно. Если подскажете, как изменить эту строчку кода, остальное (активацию ячейки в нужном месте) сделаю сам. И еще: можно ли удлиннить окошко фильтра до низа экрана монитора? Чтобы видно было не 15 значений, а все 50. Спасибо. |
17.07.2009, 10:45 | #2 | ||
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Цитата:
Чем шире угол зрения, тем он тупее.
|
||
17.07.2009, 10:54 | #3 |
Пользователь
Регистрация: 22.05.2008
Сообщений: 82
|
Именно так. Как подставить переменную вместо "441"?
Я объявил переменную: Dim i as Integer (в фильтре у меня только трехзначные числа) Подставляю i в код - макрос выдает ошибку. может объявить как String? По второму вопросу: а средствами Win API возможно удлинить окно фильтра? |
17.07.2009, 14:21 | #4 |
Пользователь
Регистрация: 22.05.2008
Сообщений: 82
|
Я нашел выход из положения:
По событию изменения значения фильтра просматриваю все записи, начиная сверху, и останавливаюсь на первой нескрытой записи. Осталось самая малость - как отловить изменение значения фильтра? |
17.07.2009, 15:10 | #5 |
Форумчанин
Регистрация: 03.04.2009
Сообщений: 412
|
Фильтр стоит на ячейке. Ловите её изменение.
|
17.07.2009, 15:34 | #6 |
Пользователь
Регистрация: 22.05.2008
Сообщений: 82
|
Попробовал. Ничего.
Фильтр стоит на ячейке I1, то есть на первой ячейке столбца I. Вот строка кода: If Target.Address = [I1].Address Then MsgBox "Фильтр" Не работает. В чем ошибка? |
17.07.2009, 16:41 | #7 |
Пользователь
Регистрация: 22.05.2008
Сообщений: 82
|
Вот такое:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$I$1" Then MsgBox "Фильтр" End Sub срабатывает только на изменение значения в ячейке, но не в фильтре, включенном в эту ячейку. |
18.07.2009, 17:07 | #8 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
В общем отследить изменение фильтра можно через событие Calculate листа. В любую ячейку листа вписываем формулу типа =СЧЁТЗ(A1:D300) указав в формуле весь диапазон данных. Затем в событие листа Worksheet_Calculate прописать такой макрос.
Код:
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru Последний раз редактировалось The_Prist; 18.07.2009 в 17:18. Причина: Забыл поставить тег... |
20.07.2009, 08:13 | #9 |
Пользователь
Регистрация: 22.05.2008
Сообщений: 82
|
Работает!
Большое спасибо! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как запустить макрос из ячейки? | Maxx | Microsoft Office Excel | 8 | 15.04.2009 15:47 |
Вопрос по выбору железа | QunneD | Компьютерное железо | 7 | 01.02.2009 09:43 |
Как задать интервал между датами в фильтре | Леон | Microsoft Office Access | 2 | 22.10.2008 11:16 |
как заставить работать макрос при определенном значении ячейки? | Град | Microsoft Office Excel | 5 | 30.05.2008 16:06 |