Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Метод Application.OnKey

    Метод Application.OnKey используется в VBA Excel для назначения клавиши или сочетания клавиш, при нажатии которых запускается указанная процедура.

    Метод Application.OnKey

    Application.OnKey — это метод VBA Excel, который назначает горячие клавиши или сочетания клавиш процедурам (макросам), которые начинают выполняются при нажатии этих клавиш.

    Синтаксис

    Синтаксис метода Application.OnKey:

    Параметры

    Параметры метода 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 (левая) % (процент)

    Примеры:

    1. Код "^{w}" соответствует сочетанию клавиш Ctrl+w.
    2. Код "^+{t}" соответствует сочетанию клавиш Ctrl+Shift+t.
    3. Код "%{UP}" соответствует сочетанию клавиш Alt+↑.

    Параметр Procedure

    Имя процедуры записывается также, как отображается в окне «Макрос», которое открывается нажатием кнопки «Макросы» на вкладке «Разработчик»:

    Если имя процедуры (макроса) уникальное, тогда имя модуля можно не указывать.


    Пример назначения сочетания клавиш Ctrl+w процедуре Module10.Primer1:

    После выполнения процедуры Primer, процедура Module10.Primer1 начнет вызываться нажатием сочетания клавиш Ctrl+w.


    Если вместо имени процедуры указать пустую строку, метод Application.OnKey отменит любые действия, ранее назначенные указанному сочетанию клавиш:

    Если у заданного сочетания клавиш было действие по умолчанию, оно также выполняться не будет.


    После запуска процедуры с методом Application.OnKey без указания параметра Procedure, отменяются все предыдущие действия метода Application.OnKey:

    Если у заданного сочетания клавиш было действие по умолчанию, оно снова начнет выполняться.


    Как добавить сочетания клавиш для быстрого доступа к элементам управления пользовательской формы смотрите в статье VBA Excel. Сочетания клавиш для кнопок.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    3 комментария для “VBA Excel. Метод Application.OnKey”

    1. Почему-то метод Application.OnKey ",", "Vvod_Zpt" не работает. Пробовал разные версии: Application.OnKey "{,}", "Vvod_Zpt", даже вариант Application.OnKey Chr(44), "Vvod_Zpt" проверял. Ну ни в какую не хочет на запятую реагировать. В чём дело — понять не могу. Ставил процедуру Vvod_Zpt в модуль листа и в отдельный модуль — ничего не помогает. Проверил, когда вместо запятой поставил "a", всё отработало нормально, но мне необходимо отловить именно ","
      Может кто-нибудь сталкивался с подобной проблемой? Подскажите, пожалуйста.

      1. Евгений

        Здравствуйте, Михаил!
        С запятой, которая вызывается через Shift, работает:

        1. Нет, вызывается без Shift, это та запятая, которая, в частности, находится на цифровой клавиатуре…

    Обсуждение закрыто.