![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 22.05.2008
Сообщений: 82
|
![]()
Здравствуйте!
В, допустим, второй колонке таблицы включен фильтр. По выбору в нем нужного значения остаются строки с таким же значением, остальные скрываются. И мне нужно, чтобы активизировалась ячейка в первой строчке из отфильтрованных записей, но в том же столбце, в каком была прежде. Генератор кода дает конкретное значение фильтра: Selection.AutoFilter Field:=1, Criteria1:="441" А как конкретное значение заменить на любое выбираемое, ума не приложу, туплю видно. Если подскажете, как изменить эту строчку кода, остальное (активацию ячейки в нужном месте) сделаю сам. И еще: можно ли удлиннить окошко фильтра до низа экрана монитора? Чтобы видно было не 15 значений, а все 50. Спасибо. |
![]() |
![]() |
![]() |
#2 | ||
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]() Цитата:
Цитата:
Чем шире угол зрения, тем он тупее.
|
||
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 22.05.2008
Сообщений: 82
|
![]()
Именно так. Как подставить переменную вместо "441"?
Я объявил переменную: Dim i as Integer (в фильтре у меня только трехзначные числа) Подставляю i в код - макрос выдает ошибку. может объявить как String? По второму вопросу: а средствами Win API возможно удлинить окно фильтра? |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 22.05.2008
Сообщений: 82
|
![]()
Я нашел выход из положения:
По событию изменения значения фильтра просматриваю все записи, начиная сверху, и останавливаюсь на первой нескрытой записи. Осталось самая малость - как отловить изменение значения фильтра? |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 03.04.2009
Сообщений: 412
|
![]()
Фильтр стоит на ячейке. Ловите её изменение.
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 22.05.2008
Сообщений: 82
|
![]()
Попробовал. Ничего.
Фильтр стоит на ячейке I1, то есть на первой ячейке столбца I. Вот строка кода: If Target.Address = [I1].Address Then MsgBox "Фильтр" Не работает. В чем ошибка? |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 22.05.2008
Сообщений: 82
|
![]()
Вот такое:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$I$1" Then MsgBox "Фильтр" End Sub срабатывает только на изменение значения в ячейке, но не в фильтре, включенном в эту ячейку. |
![]() |
![]() |
![]() |
#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. Причина: Забыл поставить тег... |
![]() |
![]() |
![]() |
#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 |