Метод Application.OnKey используется в VBA Excel для назначения клавиши или сочетания клавиш, при нажатии которых запускается указанная процедура.
Метод Application.OnKey
Синтаксис
Синтаксис метода Application.OnKey:
|
1 |
Application.OnKey (Key, Procedure) |
Параметры
Параметры метода Application.OnKey:
| Параметр | Описание |
|---|---|
| Key | Строка, указывающая клавишу или сочетание клавиш. Обязательный параметр. |
| Procedure | Строка, указывающая имя выполняемой процедуры. Необязательный параметр. |
Параметры метода Application.OnKey указываются в коде VBA Excel без круглых скобок.
Параметр Key
Параметр Key может состоять из клавиш, представляющих буквы, которые записываются в фигурных скобках, например {a} или {b}. Функциональные клавиши, не представляющие буквы, используются в виде следующих кодов:
| Клавиша | Код |
|---|---|
| Backspace | {BACKSPACE} или {BS} |
| Break | {BREAK} |
| Caps Lock | {CAPSLOCK} |
| Clear | {CLEAR} |
| Delete или Del | {DELETE} или {DEL} |
| Стрелка вниз | {DOWN} |
| End | {END} |
| Enter на цифровой клавиатуре | {ENTER} |
| Enter | ~ (тильда) |
| Esc | {ESCAPE} или {ESC} |
| Help | {HELP} |
| Home | {HOME} |
| Insert | {INSERT} |
| Стрелка влево | {LEFT} |
| Num Lock | {NUMLOCK} |
| Page Down | {PGDN} |
| Page Up | {PGUP} |
| Return | {RETURN} |
| Стрелка вправо | {RIGHT} |
| Scroll Lock | {SCROLLLOCK} |
| Tab | {TAB} |
| Стрелка вверх | {UP} |
| F1–F15 | {F1}–{F15} |
Для создания сочетаний клавиш используются коды клавиш Shift, Ctrl и Alt, которые указываются перед функциональными и буквенными клавишами без фигурных скобок:
| Клавиша | Код |
|---|---|
| Shift | + (плюс) |
| Ctrl | ^ (крышка) |
| Alt (левая) | % (процент) |
Примеры:
- Код
"^{w}"соответствует сочетанию клавишCtrl+w. - Код
"^+{t}"соответствует сочетанию клавишCtrl+Shift+t. - Код
"%{UP}"соответствует сочетанию клавишAlt+↑.
Параметр Procedure
Имя процедуры записывается также, как отображается в окне «Макрос», которое открывается нажатием кнопки «Макросы» на вкладке «Разработчик»:

Если имя процедуры (макроса) уникальное, тогда имя модуля можно не указывать.
Пример назначения сочетания клавиш Ctrl+w процедуре Module10.Primer1:
|
1 2 3 |
Sub Primer() Application.OnKey "^{w}", "Module10.Primer1" End Sub |
После выполнения процедуры Primer, процедура Module10.Primer1 начнет вызываться нажатием сочетания клавиш Ctrl+w.
Если вместо имени процедуры указать пустую строку, метод Application.OnKey отменит любые действия, ранее назначенные указанному сочетанию клавиш:
|
1 |
Application.OnKey "^{w}", "" |
Если у заданного сочетания клавиш было действие по умолчанию, оно также выполняться не будет.
После запуска процедуры с методом Application.OnKey без указания параметра Procedure, отменяются все предыдущие действия метода Application.OnKey:
|
1 |
Application.OnKey "^{w}" |
Если у заданного сочетания клавиш было действие по умолчанию, оно снова начнет выполняться.
Как добавить сочетания клавиш для быстрого доступа к элементам управления пользовательской формы смотрите в статье VBA Excel. Сочетания клавиш для кнопок.
Почему-то метод
Application.OnKey ",", "Vvod_Zpt"не работает. Пробовал разные версии:Application.OnKey "{,}", "Vvod_Zpt", даже вариантApplication.OnKey Chr(44), "Vvod_Zpt"проверял. Ну ни в какую не хочет на запятую реагировать. В чём дело — понять не могу. Ставил процедуру Vvod_Zpt в модуль листа и в отдельный модуль — ничего не помогает. Проверил, когда вместо запятой поставил"a", всё отработало нормально, но мне необходимо отловить именно","…Может кто-нибудь сталкивался с подобной проблемой? Подскажите, пожалуйста.
Здравствуйте, Михаил!
С запятой, которая вызывается через Shift, работает:
Нет, вызывается без Shift, это та запятая, которая, в частности, находится на цифровой клавиатуре…
Обсуждение закрыто.