В ходе выполнения операций программа Excel постоянно отслеживает клавиши, нажимаемые пользователем. Таким образом, можно настроить клавишу (или их комбинацию) для запуска конкретной процедуры. Эта настройка не применяется, если пользователь вводит формулу или взаимодействует с диалоговым окном.
Важно отметить, что процедура, вызываемая при событии OnKey, не ограничивается одной только рабочей книгой. Выбранная пользователем комбинация клавиш может действовать во всех открытых книгах.
Также, при планировании работы с событием OnKey, обеспечьте возможность отмены вызываемого события. Для этого обычно используется процедура обработки события Workbook_BeforeClose (описана в статье №87).
В приведенном на скриншоте примере метод OnKey используется для настройки события OnKey. Здесь ПЕРЕНАЗНАЧАЮТСЯ значения клавиш <PgUp> (стрелка вверх) и <PgDn> (стрелка вниз). После выполнения процедуры Setup_OnKey, нажатие клавиши <PgDn> приведет к запуску процедуры PgDn_Sub, а нажатие клавиши <PgUp> - к запуску процедуры PgUp_Sub. Эти изменения позволяют клавише <PgDn> перемещать курсор на одну строку вниз, а клавише <PgUp> - на одну строку вверх.
В предыдущих статьях использовалась директива On Error Resume Next, позволяющая игнорировать все возможные ошибки. Например, если активная ячейка находится в первой строке, перемещение на одну строку вверх вызывает ошибку. Кроме того, при активации листа диаграммы может возникнуть ошибка, поскольку на листе диаграммы нет активной ячейки.
Для отмены событий OnKey и восстановления стандартных функций клавиш можно использовать следующую процедуру:
Макросы Setup_OnKey и Cancel_OnKey, посажены на кнопку после исполнения которых выводится информационное сообщение.
Надо отметить уважаемые читатели, что использование пустой строки в качестве второго аргумента метода OnKey не отменяет текущее событие OnKey. Вместо этого Excel игнорирует нажатие указанных клавиш, не выполняя при этом никаких действий. Например, следующий оператор указывает Excel игнорировать комбинацию клавиш <Alt+F4> (сохранение книги):
Но можно восстановить опцию, всего лишь убрав второй аргумент с запятой (, "").
Макросы Setup_OnKey_1 и Cancel_OnKey_1, посажены на кнопку после исполнения которых выводится информационное сообщение.
И при нажатии Alt+F4 появляется:
Несмотря на то, что метод OnKey можно использовать для назначения комбинаций клавиш макросу, всё-таки рекомендуется обращаться к диалоговому окну "Параметры макроса" (см. статью №1 и дополнительно №58.1).