Private Sub TextBox1_KeyPress ( ByVal KeyAscii _ As MSForms.ReturnInteger) If Chr(KeyAscii) Or Chr(KeyAscii) > «9» _ And Chr(KeyAscii) Or Chr(KeyAscii) > «Я» _ And Chr(KeyAscii) Or Chr(KeyAscii) >»я» Then MsgBox «Недопустимый символ!» KeyAscii = 0 End If End Sub
Теперь в текстовое поле можно будет ввести только русские буквы и цифры, остальные символы будут игнорироваться. Вид кода немного пугает, но на самом деле здесь все просто. Давайте рассмотрим его подробнее: Private Sub TextBox1_KeyPress( ByVal KeyAscii _ As MSForms.ReturnInteger) Это процедура обработки события KeyPress(Нажатия клавиш) для элемента TextBox1.Что-бы ее вызвать, нужно дважды щелкнуть на форме(на форме должен быть элемент TextBox), при этом откроется окно модуля формы. Вверху окна, слева, необходимо выбрать TextBox1, а справа KeyPress.
Примеры
Private Sub TextBox1_KeyPress ( ByVal KeyAscii _ As MSForms.ReturnInteger) If KeyAscii Or KeyAscii > «57» Then MsgBox «Недопустимый символ!» KeyAscii = 0 End If End Sub
Если количество недопустимых символов небольшое, то удобнее воспользоваться следующим кодом:
Можно сделать наоборот:
Private Sub TextBox1_KeyPress ( ByVal KeyAscii _ As MSForms.ReturnInteger) If KeyAscii = Asc(«1») Then KeyAscii = Asc(«7») End Sub
Виртуальные коды клавиш Windows
Private Sub TextBox1_KeyDown ( ByVal KeyCode _ As MSForms.ReturnInteger, ByVal Shift As Integer ) If KeyCode = vbKeyControl Then MsgBox «Нажата клавиша Ctrl » ‘Если нажат «Ctrl», то выскакивает сообщение End Sub
Здесь в отличии процедуры обработки события KeyPress, процедура KeyDown.Для ее вызова нужно дважды щелкнуть на форме (на форме должен быть элемент TextBox),при этом откроется окно модуля формы. Вверху окна, слева, необходимо выбрать TextBox1,а справа KeyDown(также, как для события KeyPress, см.выше). vbKeyControl – константа описывающая клавишу «Ctrl»
Имитация нажатия клавиш на клавиатуре в VBA Excel с помощью оператора SendKeys, в том числе эмуляция нажатия сочетаний клавиш. Синтаксис, коды, примеры.
Синтаксис оператора SendKeys
Параметры оператора SendKeys:
Параметр
Описание
string
Обязательный параметр. Строковое выражение, возвращающее код клавиши (сочетания клавиш).
wait
Необязательный параметр. Логическое значение, определяющее режим ожидания. False (по умолчанию) – контроль процедуре возвращается сразу после отправки кода клавиш. True – перед возвратом контроля процедуре коды клавиш обрабатываются.
Имитация нажатия клавиш
Для эмуляции нажатия специальных клавиш, включая функциональные и клавиши управления курсором, используются специальные коды, заключенные в фигурные скобки.
Коды специальных клавиш
Клавиша
Код
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
%
* Обнаружено в Windows 8.1 (Excel 2016).
Примеры с оператором SendKeys
Коды примеров запускаются через кнопку на рабочем листе, иначе имитация нажатия клавиш произойдет в окне редактора VBA с записью символов внутри процедуры. Попробуйте, ради интереса, запустить код первого примера из редактора VBA.
Пример 1 Заполняем первые три ячейки столбца «A» различными значениями, имитируя нажатия клавиш из кода VBA Excel:
The following constants can be used anywhere in your code in place of the actual values.
Constant
Value
Description
vbKeyLButton
0x1
Left mouse button
vbKeyRButton
0x2
Right mouse button
vbKeyCancel
0x3
CANCEL key
vbKeyMButton
0x4
Middle mouse button
vbKeyBack
0x8
BACKSPACE key
vbKeyTab
0x9
TAB key
vbKeyClear
0xC
CLEAR key
vbKeyReturn
0xD
ENTER key
vbKeyShift
0x10
SHIFT key
vbKeyControl
0x11
CTRL key
vbKeyMenu
0x12
MENU key
vbKeyPause
0x13
PAUSE key
vbKeyCapital
0x14
CAPS LOCK key
vbKeyEscape
0x1B
ESC key
vbKeySpace
0x20
SPACEBAR key
vbKeyPageUp
0x21
PAGE UP key
vbKeyPageDown
0x22
PAGE DOWN key
vbKeyEnd
0x23
END key
vbKeyHome
0x24
HOME key
vbKeyLeft
0x25
LEFT ARROW key
vbKeyUp
0x26
UP ARROW key
vbKeyRight
0x27
RIGHT ARROW key
vbKeyDown
0x28
DOWN ARROW key
vbKeySelect
0x29
SELECT key
vbKeyPrint
0x2A
PRINT SCREEN key
vbKeyExecute
0x2B
EXECUTE key
vbKeySnapshot
0x2C
SNAPSHOT key
vbKeyInsert
0x2D
INSERT key
vbKeyDelete
0x2E
DELETE key
vbKeyHelp
0x2F
HELP key
vbKeyNumlock
0x90
NUM LOCK key
The A key through the Z key are the same as the ASCII equivalents A–Z.
Constant
Value
Description
vbKeyA
65
A key
vbKeyB
66
B key
vbKeyC
67
C key
vbKeyD
68
D key
vbKeyE
69
E key
vbKeyF
70
F key
vbKeyG
71
G key
vbKeyH
72
H key
vbKeyI
73
I key
vbKeyJ
74
J key
vbKeyK
75
K key
vbKeyL
76
L key
vbKeyM
77
M key
vbKeyN
78
N key
vbKeyO
79
O key
vbKeyP
80
P key
vbKeyQ
81
Q key
vbKeyR
82
R key
vbKeyS
83
S key
vbKeyT
84
T key
vbKeyU
85
U key
vbKeyV
86
V key
vbKeyW
87
W key
vbKeyX
88
X key
vbKeyY
89
Y key
vbKeyZ
90
Z key
The 0 key through 9 key are the same as their ASCII equivalents 0–9.
Constant
Value
Description
vbKey0
48
0 key
vbKey1
49
1 key
vbKey2
50
2 key
vbKey3
51
3 key
vbKey4
52
4 key
vbKey5
53
5 key
vbKey6
54
6 key
vbKey7
55
7 key
vbKey8
56
8 key
vbKey9
57
9 key
Numeric keypad keys
The following constants represent keys on the numeric keypad.
Constant
Value
Description
vbKeyNumpad0
0x60
0 key
vbKeyNumpad1
0x61
1 key
vbKeyNumpad2
0x62
2 key
vbKeyNumpad3
0x63
3 key
vbKeyNumpad4
0x64
4 key
vbKeyNumpad5
0x65
5 key
vbKeyNumpad6
0x66
6 key
vbKeyNumpad7
0x67
7 key
vbKeyNumpad8
0x68
8 key
vbKeyNumpad9
0x69
9 key
vbKeyMultiply
0x6A
MULTIPLICATION SIGN (*) key
vbKeyAdd
0x6B
PLUS SIGN (+) key
vbKeySeparator
0x6C
ENTER key
vbKeySubtract
0x6D
MINUS SIGN (—) key
vbKeyDecimal
0x6E
DECIMAL POINT (.) key
vbKeyDivide
0x6F
DIVISION SIGN (/) key
Function keys
The following constants represent function keys.
Constant
Value
Description
vbKeyF1
0x70
F1 key
vbKeyF2
0x71
F2 key
vbKeyF3
0x72
F3 key
vbKeyF4
0x73
F4 key
vbKeyF5
0x74
F5 key
vbKeyF6
0x75
F6 key
vbKeyF7
0x76
F7 key
vbKeyF8
0x77
F8 key
vbKeyF9
0x78
F9 key
vbKeyF10
0x79
F10 key
vbKeyF11
0x7A
F11 key
vbKeyF12
0x7B
F12 key
vbKeyF13
0x7C
F13 key
vbKeyF14
0x7D
F14 key
vbKeyF15
0x7E
F15 key
vbKeyF16
0x7F
F16 key
See also
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.
Виртуальные коды клавиш в Visual Basic 6.0 — константы клавиш
Практически во всех программах есть возможность использование клавиш, т.е. например Вы нажимаете в программе сочетание клавиш ctrl+F1, и программа выполняет какое-либо действие. Поэтому и мы попробуем использовать эти функции в своих программах.
Все, что мы сейчас будем обсуждать, относится к среде программирования Microsoft Visual Basic v6.0. В данной среде программирования имеется возможность ловить нажатие клавиш, и делается это следующим образом (рассмотрим пример):
Сначала объявляется функция GetAsyncKeyState, потом уже сама клавиша ADD (клавиша плюсик + справа на клавиатуре), потом идет код таймера, соответственно Вы должны добавить на форму таймер и выставить ему значение в окне свойств в поле Interval 1 или 100.
Затем в коде указанно, что если нажимается клавиша +, то выводится сообщение. Это самый простой пример использования клавиш в Visual Basic или как еще называют эту процедуру «ловить нажатие клавиш».
А если Вы хотите использовать сочетание клавиш, то после If GetAsyncKeyState(vbKeyAdd) вставьте And GetAsyncKeyState (vbKeyF9), что будет означать, что теперь необходимо нажимать сочетание клавиш + и F9, но конечно не забудьте объявить саму константу, т.е. вставить в модуле формы следующее: Private Const VK_F9 = &H78, что будет означать, что мы объявили эту клавишу.
Весь представленный выше код набирался в модуле формы и соответственно и функция и клавиша объявлялись с помощью ключевого слова Private т.к. процедуры, объявленные в модуле формы, являются закрытыми и перед их объявлением должно стоять данное слово. Но также можно использовать возможность объявление данных процедур в отдельном модуле, который является открытым и перед объявлением этих процедур необходимо указывать слово Public.
Ниже представлен перечень виртуальных кодов клавиш, которых можно использовать в Visual Basic, как в модуле формы, так и в отдельном модуле: