Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2009, 10:29   #1
dsapa
Пользователь
 
Регистрация: 22.05.2008
Сообщений: 82
По умолчанию Макрос активации ячейки по выбору в фильтре

Здравствуйте!

В, допустим, второй колонке таблицы включен фильтр.
По выбору в нем нужного значения остаются строки с таким же значением, остальные скрываются. И мне нужно, чтобы активизировалась ячейка в первой строчке из отфильтрованных записей, но в том же столбце, в каком была прежде.

Генератор кода дает конкретное значение фильтра:
Selection.AutoFilter Field:=1, Criteria1:="441"
А как конкретное значение заменить на любое выбираемое, ума не приложу, туплю видно. Если подскажете, как изменить эту строчку кода, остальное (активацию ячейки в нужном месте) сделаю сам.

И еще: можно ли удлиннить окошко фильтра до низа экрана монитора? Чтобы видно было не 15 значений, а все 50.
Спасибо.
dsapa вне форума Ответить с цитированием
Старый 17.07.2009, 10:45   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Selection.AutoFilter Field:=1, Criteria1:="441"
А как конкретное значение заменить на любое выбираемое
Т.е. Вам не удается вместо "441" подставить переменную? Или в чем вопрос?
Цитата:
можно ли удлиннить окошко фильтра до низа экрана монитора?
Excel не позволяет этого сделать.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 17.07.2009, 10:54   #3
dsapa
Пользователь
 
Регистрация: 22.05.2008
Сообщений: 82
По умолчанию

Именно так. Как подставить переменную вместо "441"?
Я объявил переменную:
Dim i as Integer
(в фильтре у меня только трехзначные числа)
Подставляю i в код - макрос выдает ошибку.
может объявить как String?

По второму вопросу: а средствами Win API возможно удлинить окно фильтра?
dsapa вне форума Ответить с цитированием
Старый 17.07.2009, 14:21   #4
dsapa
Пользователь
 
Регистрация: 22.05.2008
Сообщений: 82
По умолчанию

Я нашел выход из положения:
По событию изменения значения фильтра просматриваю все записи, начиная сверху, и останавливаюсь на первой нескрытой записи.
Осталось самая малость - как отловить изменение значения фильтра?
dsapa вне форума Ответить с цитированием
Старый 17.07.2009, 15:10   #5
pivas
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 412
По умолчанию

Фильтр стоит на ячейке. Ловите её изменение.
pivas вне форума Ответить с цитированием
Старый 17.07.2009, 15:34   #6
dsapa
Пользователь
 
Регистрация: 22.05.2008
Сообщений: 82
По умолчанию

Попробовал. Ничего.
Фильтр стоит на ячейке I1, то есть на первой ячейке столбца I.
Вот строка кода:
If Target.Address = [I1].Address Then MsgBox "Фильтр"
Не работает.
В чем ошибка?
dsapa вне форума Ответить с цитированием
Старый 17.07.2009, 16:41   #7
dsapa
Пользователь
 
Регистрация: 22.05.2008
Сообщений: 82
По умолчанию

Вот такое:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$1" Then MsgBox "Фильтр"
End Sub

срабатывает только на изменение значения в ячейке, но не в фильтре, включенном в эту ячейку.
dsapa вне форума Ответить с цитированием
Старый 18.07.2009, 17:07   #8
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

В общем отследить изменение фильтра можно через событие Calculate листа. В любую ячейку листа вписываем формулу типа =СЧЁТЗ(A1:D300) указав в формуле весь диапазон данных. Затем в событие листа Worksheet_Calculate прописать такой макрос.

Код:
Option Explicit
Private Sub Worksheet_Calculate()
    Application.ScreenUpdating = False
    Cells(1, ActiveCell.Column).Activate
    SendKeys "{down}"
    Application.ScreenUpdating = True
End Sub
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru

Последний раз редактировалось The_Prist; 18.07.2009 в 17:18. Причина: Забыл поставить тег...
The_Prist вне форума Ответить с цитированием
Старый 20.07.2009, 08:13   #9
dsapa
Пользователь
 
Регистрация: 22.05.2008
Сообщений: 82
По умолчанию

Работает!
Большое спасибо!
dsapa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запустить макрос из ячейки? 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