Метод 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, это та запятая, которая, в частности, находится на цифровой клавиатуре…
Обсуждение закрыто.