Нажатие клавиш vba excel
Имитация нажатия клавиш на клавиатуре в VBA Excel с помощью оператора SendKeys, в том числе эмуляция нажатия сочетаний клавиш. Синтаксис, коды, примеры.
Синтаксис оператора SendKeys
Параметры оператора SendKeys:
Параметр | Описание |
---|---|
string | Обязательный параметр. Строковое выражение, возвращающее код клавиши (сочетания клавиш). |
wait | Необязательный параметр. Логическое значение, определяющее режим ожидания. False (по умолчанию) – контроль процедуре возвращается сразу после отправки кода клавиш. True – перед возвратом контроля процедуре коды клавиш обрабатываются. |
Имитация нажатия клавиш
Эмуляция нажатия алфавитно-цифровых клавиш из кода VBA Excel, не представляющих спецсимволы: параметру string задается значение символа в прямых кавычках, например, "А" , "Абвгд" , "356" .
Имитация нажатия клавиш, представляющих спецсимволы: параметру string задается значение символа в фигурных скобках, например, "" , "<)>" .
Спецсимволы, которые следует заключать в фигурные скобки: плюс + , возведение в степень ^ , знак процента % , тильда ~ , круглые скобки () , квадратные скобки [] и сами фигурные скобки <> . Символы фигурных скобок указываются так: "" и "<>>" .
Для эмуляции нажатия специальных клавиш, включая функциональные и клавиши управления курсором, используются специальные коды, заключенные в фигурные скобки.
Фигурные скобки используются и для имитации нескольких нажатий одной клавиши из кода VBA Excel. В этом случае параметр string записывается в виде , где число – количество нажатий. Например: "" .
Коды специальных клавиш
Клавиша | Код |
---|---|
BACKSPACE | или |
BREAK | |
CAPS LOCK | |
DEL или DELETE | или |
СТРЕЛКА ВНИЗ | |
END | |
ENTER | или ~ |
ESC | |
HELP | |
HOME | |
INS или INSERT | или |
СТРЕЛКА ВЛЕВО | |
NUM LOCK | |
PAGE DOWN | |
PAGE UP | |
PRINT SCREEN | |
СТРЕЛКА ВПРАВО | |
SCROLL LOCK | |
TAB | |
СТРЕЛКА ВВЕРХ | |
F1 … F16 | … |
Эмуляция сочетаний клавиш
Чтобы указать сочетание клавиш с SHIFT, CTRL, ALT или их комбинацией, необходимо добавить перед кодом клавиши один или несколько следующих кодов:
Клавиша | Код |
---|---|
SHIFT | + |
CTRL | ^ |
ALT | % |
Чтобы указать, что клавиши SHIFT, CTRL и ALT в любом сочетании необходимо удерживать, нажимая несколько других клавиш, заключите код для последних клавиш в круглые скобки. Например, чтобы указать, что нужно удерживать клавишу SHIFT, нажимая клавиши а, б, в, г, д, введите "+(абвгд)" .
Важное примечание:
Применение оператора SendKeys может приводить к автоматическому отключению* правого цифрового блока клавиатуры (переключает на стрелки и специальные клавиши). Чтобы вернуть исходную функциональность цифрового блока, необходимо в конце процедуры применить имитацию нажатия клавиши «NUM LOCK»: SendKeys "" . К сожалению, работает не всегда.
* Обнаружено в Windows 8.1 (Excel 2016).
Примеры с оператором SendKeys
Коды примеров запускаются через кнопку на рабочем листе, иначе имитация нажатия клавиш произойдет в окне редактора VBA с записью символов внутри процедуры. Попробуйте, ради интереса, запустить код первого примера из редактора VBA.
Пример 1
Заполняем первые три ячейки столбца «A» различными значениями, имитируя нажатия клавиш из кода VBA Excel:
Выполняет указанную процедуру при нажатии определенного клавиши или комбинации ключей.
Синтаксис
выражения. OnKey (клавиша, процедура)
выражение: переменная, представляющая объект Application.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
Раздел | Обязательный | String | Строка, указывающая клавишу, нажатую. |
Процедура | Необязательный | Variant | Строка, указывающая имя необходимой процедуры. Если процедура "" (пустой текст), при нажатии клавиши ничего не происходит. Эта форма OnKey изменяет нормальный результат нажатия клавиш в Microsoft Excel. |
Комментарии
Аргумент Key может указать любой один ключ в сочетании с Alt, Ctrl или Shift или любым сочетанием этих ключей. Каждая клавиша представлена одним или несколькими символами, например a для символа "a" или для клавиши Enter.
Чтобы указать символы, которые не отображаются при нажатии соответствующего ключа (например: Ввод или вкладка), используйте коды, перечисленные в следующей таблице. Каждый код в таблице представляет одну клавишу на клавиатуре.
Ключ | Код |
---|---|
BACKSPACE | или |
BREAK | |
CAPS LOCK | |
CLEAR | |
DELETE или DEL | или |
СТРЕЛКА ВНИЗ | |
END | |
ВВОД (на цифровой клавиатуре) | |
ВВОД | ~ (тильда) |
ESC | < ESCAPE>или |
HELP | |
HOME | |
INSERT | |
СТРЕЛКА ВЛЕВО | |
NUM LOCK | |
PAGE DOWN | |
PAGE UP | |
RETURN | |
СТРЕЛКА ВПРАВО | |
SCROLL LOCK | |
TAB | |
СТРЕЛКА ВВЕРХ | |
F1–F15 | – |
Вы также можете указать клавиши в сочетании с Shift and/or Ctrl and/or Alt and/or Command. Чтобы указать клавишу в сочетании с другой клавишей или клавишами, используйте следующую таблицу.
Объединение ключей с | Предварять код ключа |
---|---|
Shift | + (знак "плюс") |
CTRL | ^ (знак "крышка") |
ALT | % (знак процента) |
Команда | * (звездочка) Применяется только к Mac; может работать только на Excel 2011 для Mac и не более поздних версий. |
Чтобы назначить процедуру одному из специальных символов (+, ^, %и т. д.), заключите символ в скобки. Подробные сведения см. в примере.
В настоящее время в последних версиях Office VBA нет способа обнаружения клавиши Command. Корпорация Майкрософт знает об этом и ищет ее.
Пример
В этом примере InsertProc назначает ключную последовательность Ctrl+Plus Sign и назначает SpecialPrintProc ключевой последовательности Shift+Ctrl+Right Arrow.
В этом примере стрелка Shift+Ctrl+Right возвращается к обычному значению.
В этом примере отключена последовательность ключей Shift+Ctrl+Right Arrow.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
выражение: переменная, представляющая объект Application.
Параметры
Примечания
Аргумент Keys может указывать любую отдельную клавишу или любую клавишу в сочетании с ALT, CTRL или SHIFT (или любым сочетанием этих клавиш). Каждая клавиша представлена одним или несколькими символами, например "a" для символа "a" или "" для клавиши Enter.
Чтобы указать символы, не отображающиеся при нажатии соответствующей клавиши (например, Enter или Tab), используйте коды, приведенные в следующей таблице. Каждый код в таблице представляет одну клавишу на клавиатуре.
Ключ | Код |
---|---|
BACKSPACE | или |
BREAK | |
CAPS LOCK | |
CLEAR | |
DELETE или DEL | или |
СТРЕЛКА ВНИЗ | |
END | |
ВВОД (на цифровой клавиатуре) | |
ВВОД | ~ (тильда) |
ESC | или |
HELP | |
HOME | |
INSERT | |
СТРЕЛКА ВЛЕВО | |
NUM LOCK | |
PAGE DOWN | |
PAGE UP | |
RETURN | |
СТРЕЛКА ВПРАВО | |
SCROLL LOCK | |
TAB | |
СТРЕЛКА ВВЕРХ | |
F1–F15 | – |
Вы также можете указать клавиши в сочетании с Shift и/или Ctrl и/или Alt. Чтобы указать клавишу в сочетании с другой клавишей или клавишами, используйте приведенную ниже таблицу.
Для использования сочетания клавиши | Перед кодом клавиши укажите |
---|---|
Shift | + (знак "плюс") |
CTRL | ^ (знак "крышка") |
ALT | % (знак процента) |
Пример
В следующем примере создается новая книга.
В следующем примере показан Диспетчер имен.
В следующем примере в текущую ячейку вводится значение 1234.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Runs a specified procedure when a particular key or key combination is pressed.
Syntax
expression.OnKey (Key, Procedure)
expression A variable that represents an Application object.
Parameters
Name | Required/Optional | Data type | Description |
---|---|---|---|
Key | Required | String | A string indicating the key to be pressed. |
Procedure | Optional | Variant | A string indicating the name of the procedure to be run. If Procedure is "" (empty text), nothing happens when Key is pressed. This form of OnKey changes the normal result of keystrokes in Microsoft Excel. |
Remarks
The Key argument can specify any single key combined with Alt, Ctrl, or Shift, or any combination of these keys. Each key is represented by one or more characters, such as a for the character a, or for the Enter key.
To specify characters that aren't displayed when you press the corresponding key (for example: Enter or Tab), use the codes listed in the following table. Each code in the table represents one key on the keyboard.
Key | Code |
---|---|
BACKSPACE | or |
BREAK | |
CAPS LOCK | |
CLEAR | |
DELETE or DEL | or |
DOWN ARROW | |
END | |
ENTER (numeric keypad) | |
ENTER | ~ (tilde) |
ESC | < ESCAPE>or |
HELP | |
HOME | |
INS | |
LEFT ARROW | |
NUM LOCK | |
PAGE DOWN | |
PAGE UP | |
RETURN | |
RIGHT ARROW | |
SCROLL LOCK | |
TAB | |
UP ARROW | |
F1 through F15 | through |
You can also specify keys combined with Shift and/or Ctrl and/or Alt and/or Command. To specify a key combined with another key or keys, use the following table.
To combine keys with | Precede the key code by |
---|---|
Shift | + (plus sign) |
Ctrl | ^ (caret) |
Alt | % (percent sign) |
Command | * (asterisk) Only applies to Mac; may only work on Excel 2011 for Mac and not later versions. |
To assign a procedure to one of the special characters (+, ^, %, and so on), enclose the character in braces. For details, see the example.
There is no way to currently detect the Command key in recent versions of Office VBA. Microsoft is aware of this and is looking into it.
Example
This example assigns InsertProc to the key sequence Ctrl+Plus Sign, and assigns SpecialPrintProc to the key sequence Shift+Ctrl+Right Arrow.
This example returns Shift+Ctrl+Right Arrow to its normal meaning.
This example disables the Shift+Ctrl+Right Arrow key sequence.
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Вкладка с инструментами, связанными с VBA Excel, называется «Разработчик». Если этой вкладки нет на вашей ленте, добавьте ее через окно «Параметры»:
- Откройте окно «Параметры» через меню «Файл».
- Выберите вкладку «Настроить ленту».
- В правой колонке установите галочку у пункта «Разработчик» и нажмите «OK».
Кнопка – элемент управления формы
Вставка кнопки на лист
- Выберите вкладку «Разработчик» и нажмите на кнопку «Вставить».
- Нажмите на значок кнопки в коллекции «Элементы управления формы».
- Кликните в любом месте на рабочем листе Excel.
- Откроется окно «Назначить макрос объекту». Нажмите «Отмена», так как макрос для этой кнопки еще не готов.
- После нажатия кнопки «Отмена», на рабочем листе появится новая кнопка из коллекции «Элементы управления формы» в режиме редактирования.
Ухватив мышкой за один из кружочков, можно изменить размер кнопки. Ухватив кнопку за границу, можно перетащить ее в другое место. Также, в режиме редактирования, можно изменить название кнопки прямо на ее поверхности.
Чтобы выйти из режима редактирования кнопки из коллекции «Элементы управления формы», кликните в любом месте на рабочем листе.
Чтобы вернуться в режим редактирования кнопки, кликните по ней правой кнопкой мыши и выберите из контекстного меню нужный пункт. Если вы хотите изменить размер или размещение кнопки перетаскиванием, кликните левой кнопкой мыши в любом месте рабочего листа. После первого клика контекстное меню закроется, а кнопка останется в режиме редактирования.
Создание процедуры для кнопки
Кнопке из коллекции «Элементы управления формы» можно назначить макрос (процедуру), размещенную в стандартном программном модуле.
Создайте или откройте файл Excel с расширением .xlsm (Книга Excel с поддержкой макросов) и перейдите в редактор VBA, нажав сочетание клавиш «Левая_клавиша_Alt+F11».
Если вы не создавали ранее в этом проекте VBA стандартный программный модуль, нажмите кнопку «Module» во вкладке «Insert» главного меню. То же подменю откроется при нажатии на вторую кнопку (после значка Excel) на панели инструментов.
Ссылка на модуль появится в проводнике слева. Если модуль создан ранее, дважды кликните по его ссылке в проводнике, и он откроется справа для редактирования.
В открывшемся окне добавления шаблона процедуры оставьте выбранным переключатель «Sub», вставьте в поле «Name» название процедуры «NovayaProtsedura» и нажмите «OK».
В стандартный программный модуль будет вставлен шаблон процедуры «NovayaProtsedura».
Читайте также: