Добрый день. Не могу понять почему при Русской раскладке коды клавиш у меня заваливают за 1000.
Я хотел ограничить ввод в TextBox, создал Константу где указал 6 букв, которые должны вводиться в поле - "GRPМин" В результате ввод Английских букв срабатывает, а Русских вызывает ошибку. И как я выяснил она связана с тем, что KeyAscii выдает номер клавиш больше чем 256
Когда я использую On Error Resume Next - то это просто спасает меня от ошибки, но при этом Русские буквы печатать в поле TextBox нельзя
[vba]
Код
Option Explicit Const cBoxTipBay As String = "МинGRP"
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'On Error Resume Next
Dim msgErr As String If InStr(cBoxTipBay, Chr(KeyAscii)) = 0 Then KeyAscii = 0
MsgBox Chr(KeyAscii) & " " & KeyAscii
TextBox1.MaxLength = 3 ' Ограничение на ввод по кол-ву символов End Sub
[/vba]
Добрый день. Не могу понять почему при Русской раскладке коды клавиш у меня заваливают за 1000.
Я хотел ограничить ввод в TextBox, создал Константу где указал 6 букв, которые должны вводиться в поле - "GRPМин" В результате ввод Английских букв срабатывает, а Русских вызывает ошибку. И как я выяснил она связана с тем, что KeyAscii выдает номер клавиш больше чем 256
Когда я использую On Error Resume Next - то это просто спасает меня от ошибки, но при этом Русские буквы печатать в поле TextBox нельзя
[vba]
Код
Option Explicit Const cBoxTipBay As String = "МинGRP"
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'On Error Resume Next
Dim msgErr As String If InStr(cBoxTipBay, Chr(KeyAscii)) = 0 Then KeyAscii = 0
MsgBox Chr(KeyAscii) & " " & KeyAscii
TextBox1.MaxLength = 3 ' Ограничение на ввод по кол-ву символов End Sub
Не нужно ничего возвращать, вот так все прекрасно работает [vba]
Код
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If InStr(cBoxTipBay, ChrW(KeyAscii)) = 0 Then KeyAscii = 0 TextBox1.MaxLength = 3 ' Ограничение на ввод по кол-ву символов End Sub
Не нужно ничего возвращать, вот так все прекрасно работает [vba]
Код
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If InStr(cBoxTipBay, ChrW(KeyAscii)) = 0 Then KeyAscii = 0 TextBox1.MaxLength = 3 ' Ограничение на ввод по кол-ву символов End Sub