Выполняет указанную процедуру при нажатии определенного клавиши или комбинации ключей.
Синтаксис
выражения. OnKey(Клавиша, Процедура)
выражение: переменная, представляющая объект Application.
Параметры
Имя
Обязательный или необязательный
Тип данных
Описание
Ключ
Обязательный
String
Строка, указывающая клавишу, нажатую.
Процедура
Необязательный
Variant
Строка, указывающая имя необходимой процедуры. Если процедура «» (пустой текст), при нажатии клавиши ничего не происходит. Эта форма OnKey изменяет нормальный результат нажатия клавиш в Microsoft Excel.
Если процедура опущена, ключ возвращается к нормальному результату в Microsoft Excel, и все специальные назначения ключей, сделанные с помощью предыдущих методов OnKey, будут очищены.
Заметки
Аргумент 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 и обратная связь.
Иногда необходимо, чтобы ввод с клавиатуры обрабатывался именно формой, даже если фокус находится у элемента управления. Сделать это позволяет свойство формы « KeyPreview ». При создании формы это значение принимается равным « False ». Если же его установить равным « True », то форма будет перехватывать весь ввод с клавиатуры, с которым теперь можно работать в процедурах обработки событий самой формы. И только после этого будет передано управление элементу управления, находящемуся в фокусе.
12.2. Обработка событий мыши
Когда вы что-нибудь делаете с помощью мыши, генерируется определенное событие. При щелчке мышью происходит событие « Click », при двойном щелчке – « DblClick », а в момент перемещения указателя – « Move ». Где и когда произойдет определенное событие, зависит от положения указателя мыши. Иногда одно действие производит несколько событий.
Событие « Click » характерно практически для всех объектов и процедура обработки этого события имеет следующий синтаксис:
Private Sub Name_Click()
· Private – область действия процедуры обработки события;
· Name – имя элемента управления, которому адресовано событие;
· Click – имя события.
Аналогично можно запрограммировать событие « DblClick », указав это слово в заголовке процедуры вместо « Click ».
Эти два события связаны только со щелчками левой клавишей мыши, правая и средняя в этом случае будут игнорироваться.
При щелчках мыши происходят и другие события: « MouseDown » (нажатие клавиши), « MouseUp » (отпускание клавиши). Процедуры их обработки имеют следующий синтаксис:
Shift As Integer, X As Single, Y As Single)
Private Sub Name_MouseUp(Button As Integer,_
Shift As Integer, X As Single, Y As Single)
· Private – область видимости события.
· Name – имя элемента управления, которому адресовано событие.
· MouseDown / MouseUp – имена обрабатываемых событий.
Процедуры обработки события « MouseDown » и « MouseUp » являются более сложными и обладающие расширенными возможностями по сравнению с процедурами событий « Click » и « DblClick ».
Выполнение процедур обработки событий « MouseDown » и « MouseUp » нельзя запрограммировать на конкретную клавишу мыши, но можно узнать какой клавишей она была запущена.
При перемещении указателя мыши генерируется событие « MouseMove », имеющее следующий синтаксис:
Private Sub Name_MouseMove(Button As Integer,_
Shift As Integer, X As Single, Y As Single)
· Private – область видимости события.
· Name – имя элемента управления, которому адресовано событие.
· Shift – целое число, описывающее состояние клавиш Shift >, Ctrl > и Alt > на клавиатуре в момент генерирования события (см табл. 13).
· X – координата указателя мыши по горизонтали.
· Y – координата указателя мыши по вертикали.
При этом перемещение должно быть обязательно над элементом управления, для которого была написана процедура обработки события.
В отношении этого события важно помнить следующее: процедура генерируется при каждом перемещении мыши. Поэтому если процедура имеет слишком большой размер, то она не будет успевать выполняться в промежутки между ее вызовами. В результате это может разрушить всю работу приложения.
Visual Basic имеет два серьезных недостатка при обработке событий мыши:
12.3. Перемещение объектов
Иногда может возникнуть необходимость предоставить пользователю возможность перемещения объектов по форме. Это можно сделать, непосредственно изменяя свойства « Left » и « Top » у перемещаемых объектов. Однако это можно реализовать более гибким и удобным способом, используя события «схватить и бросить». Хотя это событие и реализуется для формы в целом, но осуществляется с помощью мыши.
Любой видимый элемент управления обладает особым свойством « DragMode ». При его значении «0 – Manual » перемещение объекта запрещается, и он работает обычным образом. В случае его значения «1 – Automatic » перемещение разрешается, но прочая его работа (все остальные события) блокируется.
Процедура обработки события, которое связано с перемещением элементов управления, имеет следующий синтаксис:
Private Sub Form_DragDrop(Source As Control,_
X As Single, Y As Single)
· Private – область видимости процедуры обработки события.
· Form – поскольку событие адресуется только форме, то в качестве имени управляющего объекта необходимо записывать слово « Form ».
· DragDrop – имя события.
· Source – особая переменная, в которой хранится имя перетаскиваемого элемента управления (свойство « Name »); работает как ссылка на него.
· Control – зарезервированное слово, описывающее переменную ссылку.
Текущие координаты « X » и « Y » будут присвоены свойствам « Left » и « Top » перемещаемого объекта соответственно, т.е. координатам левого верхнего угла элемента управления.
При перемещении иногда бывает важным узнать, возможно ли оно или нет. Отследить подобное помогает специальное событие « DragOver », процедура обработки которого имеет следующий синтаксис:
Private Sub Form_DragOver(Source As Control,_
X As Single, Y As Single, State As Integer)
· Private – область видимости процедуры обработки события.
· Form – поскольку событие адресуется только форме, то в качестве имени управляющего объекта необходимо записывать слово « Form ».
· DragOver – имя события.
· Source – особая переменная, в которой хранится имя перетаскиваемого элемента управления (свойство « Name »); работает как ссылка на него.
· Control – зарезервированное слово, описывающее переменную ссылку.
· State – специальный параметр, определяющий характер перемещения.
Параметр « State » может принимать несколько значений в зависимости от характера перемещения (см. табл. 29).
Возможные значения параметра « State »
Перетаскивание элемента управления с несвободного места на свободное
Перетаскивание элемента управления со свободного места на занятое
Перетаскивание элемента управления с одного свободного места на другое свободное
Еще одним полезным свойством перетаскиваемого элемента управления является « DragIcon ». Оно хранит в себе некоторый графический образ (файл пиктограммы «*. ico »), который будет отображаться при перемещении объекта вместо указателя мыши. В противном случае на экране просто будет отображен профиль этого объекта.
Всем привет, с вами автор блога scriptcoding.ru. Сегодня мы затронем такую тему как имитация нажатия клавиш программными средствами с помощью метода SendKeys класса WScript.Shell.
SendKeys – имитация нажатия клавиш – теоретические основы
Метод SendKeys, который позволяет имитировать нажатие клавиш и их комбинаций. Метод SendKeys объекта WScript.Shell является по своей природе слепым, так как он не позволяет указать то приложение, которому назначен ввод с клавиатуры, то есть, если мы сделаем попытку имитировать ввод фразы «привет мир», то она будет обрабатываться лишь тому приложениею, которое в данный момент являются активным. Если активным будет текстовый редактор – то в нем отобразится заданный текст, если антивирусная программа – то, скорее всего, никакой активности не произойдет.
Что бы использовать функцию Wscript SendKeys, нужно объявить переменную, которая будет хранить ссылку на объект WScript.Shell, а уже через эту переменную можно будет вызвать SendKeys.
Общая логика работы:
SendKeys (строка) – Видим, что мы в качестве аргумента должны передать строковое выражение, которое будет хранить имя клавиши или сочетание.
Что бы ввести просто символ или набор символов, мы всего-навсего прописываем их как строку, например: SendKeys(«привет мир»). Для ввода специальных клавиш (например, Enter, стрелки, функциональные клавиши и так далее), их название нужно заключить в фигурные скобки <>.
Ниже приведен список функциональных клавиш и их обозначение:
Если нужно указать сочетание специальных клавиш, то следует использовать следующие коды:
Также стоит помнить, что для ввода символов +, ^, %,
SendKeys – имитация нажатия клавиш – приступаем к программированию
Хорошо, с теорией разобрались, теперь давайте приступим к программированию. Давайте для начала рассмотрим следующий пример программного кода на языке vbscript:
А вот аналогичный пример, но уже на языке jscript:
А вот еще один пример на vbscript :
Ну и пример на языке jscript :
И так, давайте все подытожим… В этой статье мы рассмотрели функцию SendKeys класса WScript Shell, которая позволяет создавать имитацию нажатия клавиш, мы написали четыре программных кода – два на языке vbscript и два на языке jscript. Помним, что программный код работает под управлением сервера сценариев Windows Script Host.