SendKeys "{DOWN}" переходит на сроку, ActCellrow дает старую

Программирование на Visual Basic for Applications
Burk
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 17.05.2013 (Пт) 15:19

SendKeys "{DOWN}" переходит на сроку, ActCellrow дает старую

Сообщение Burk » 19.05.2013 (Вс) 9:30

Стоит автофильтр на Column, хотелось программно без перебора всех строк листа перейти на следующую отфильтрованную. Ставлю в программу оператор SendKeys "{DOWN}" - переходит, но следующий оператор [C5]=ActiveCell.Row выдает номер исходной строки, а не той, куда спустились. Более того, если после SendKeys поставить напр. MsgBox 1, то и на следующую фильтрованную не переходит. Кто знает в чем прикол? THANK's Burk

Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 09.09.2006 (Сб) 18:03

Re: SendKeys "{DOWN}" переходит на сроку, ActCellrow дает ст

Сообщение Template » 19.05.2013 (Вс) 13:06

Код: Выделить всё
SendKeys "{DOWN}"
DoEvents
MsgBox ActiveCell.Row

Burk
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 17.05.2013 (Пт) 15:19

Re: SendKeys "{DOWN}" переходит на сроку, ActCellrow дает ст

Сообщение Burk » 21.05.2013 (Вт) 15:52

Премного благодарен!!! Только непонятно, почему в хЭлпе для sendkeys этого нет.
С глубоким уважением. Burk

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: SendKeys "{DOWN}" переходит на сроку, ActCellrow дает ст

Сообщение iGrok » 21.05.2013 (Вт) 16:51

Burk писал(а):почему в хЭлпе для sendkeys этого нет

Потому что это никак не относится к SendKeys.

Просто до того, как получить какие-то результаты, нужно подождать, пока целевое приложение обработает переданные ему нажатия. Как раз подобным ожиданием, грубо говоря, и занимается DoEvents.

Но учти, что какие-то критичные алгоритмы на это лучше не завязывать, т.к. в условиях высокой нагрузки на систему этот код может повести себя совсем не так, как надо.
label:
cli
jmp label

Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 09.09.2006 (Сб) 18:03

Re: SendKeys "{DOWN}" переходит на сроку, ActCellrow дает ст

Сообщение Template » 21.05.2013 (Вт) 18:22

На самом деле в справке усе есть, цитирую :

SendKeys string[, wait]

Синтаксис инструкции SendKeys содержит следующие именованные аргументы:

Элемент Описание
string Обязательный. Строковое выражение, указывающее набор нажатий клавиш, который следует передать.
wait Необязательный. Значение типа Boolean, указывающее режим ожидания. Если этот аргумент имеет значение False (значение по умолчанию), управление возвращается вызывающей процедуре сразу после завершения передачи нажатий клавиш. Если этот аргумент имеет значение True, управление возвращается вызывающей процедуре только после завершения обработки переданных нажатий клавиш.

То бишь, решить поставленную задачу, можно также следующим способом :

Код: Выделить всё
SendKeys "{DOWN}", True   
MsgBox ActiveCell.Row


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

    TopList