Ударь по клавишам с помощью KeyAscii и VirtualKeyCodesОтслеживание нажатия клавиш с помощью KeyAsciiПримеры Виртуальные коды клавиш Windows Таблица кодов KeyAscii Таблица виртуальных кодов клавиш Отслеживание нажатия клавиш с помощью KeyAsciiНе редко при создании приложений на VBA, работая с формами, бывает необходимо ограничить ввод некоторых символов в текстовое поле TextBox. Рассмотрим несколько способов, чтобы решить эту проблему:Откройте новый проект, создайте форму и поместите на нее элемент TextBox1(Текстовое поле). Дважды щелкните на форме и добавьте в модуль формы такой код: Private Sub TextBox1_KeyPress
(ByVal KeyAscii _
Теперь в текстовое поле можно будет ввести только русские буквы и цифры, остальные символы будут игнорироваться.
Вид кода немного пугает, но на самом деле здесь все просто. Давайте рассмотрим его подробнее: Идем дальше. KeyAscii - аргумент возвращающий стандартный числовой код клавиши ANSI. То есть существует таблица кодов, в которой каждому символу на клавиатуре присвоено определенное число. Например: русская заглавная буква “А”=192, а маленькая “а”=224. Чтобы конвертировать числовое значение кода в строковое, применяется функция Chr, как в нашем примере(Chr(KeyAscii) < "А") Ну вот, самое сложное позади. Дальше проще: Если код KeyAscii в таблице кодов находится в диапазоне от 48 до 57: (If Chr(KeyAscii) < "0" Or Chr(KeyAscii) > "9"), и в диапазоне от 192 до 223: (And Chr(KeyAscii) < "А" Or Chr(KeyAscii) > "Я"), и в диапазоне от 224 до 255: (And Chr(KeyAscii) < "а" Or Chr(KeyAscii) >"я" Then ) то данные символы будут доступны. Если нет, то символы будет отброшены(KeyAscii = 0) - нельзя будет их ввести. ПримерыЕще один пример, в котором в текстовое поле можно будет ввести только цифры:Private Sub TextBox1_KeyPress
(ByVal KeyAscii _
Если количество недопустимых символов небольшое, то удобнее воспользоваться следующим кодом: Private Sub TextBox1_KeyPress
(ByVal KeyAscii _
Можно сделать наоборот: Private Sub TextBox1_KeyPress
(ByVal KeyAscii _
Если нужно, чтобы при нажатии на одну клавишу в текстовое поле заносилось значение другой клавиши - вот пример: Private Sub TextBox1_KeyPress
(ByVal KeyAscii _
Здесь вместо "1" будет "7". Кстати функция Asc - необходима для форматирования строкового значения кода в числовой(Противоположна функции Chr см.выше)
Private Sub TextBox1_KeyDown
(ByVal KeyCode _
Здесь в отличии процедуры обработки события KeyPress, процедура
KeyDown.Для ее вызова нужно дважды щелкнуть на форме
(на форме должен быть элемент TextBox),при этом откроется окно
модуля формы. Вверху окна, слева, необходимо выбрать
TextBox1,а справа KeyDown(также, как для события KeyPress, см.выше).
Таблица виртуальных кодов клавиш
На этом пока все. Успехов Вам! |