Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/KeyAscii при русской раскладке выдает знач > 256! - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
KeyAscii при русской раскладке выдает знач > 256!
lopuxi Дата: Понедельник, 06.06.2016, 10:59 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
Добрый день.
Не могу понять почему при Русской раскладке коды клавиш у меня заваливают за 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]
К сообщению приложен файл: TextBox__-_.xlsm (19.9 Kb)


О_о ...и так можно было?

Сообщение отредактировал lopuxi - Понедельник, 06.06.2016, 11:08
 
Ответить
СообщениеДобрый день.
Не могу понять почему при Русской раскладке коды клавиш у меня заваливают за 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]

Автор - lopuxi
Дата добавления - 06.06.2016 в 10:59
_Boroda_ Дата: Понедельник, 06.06.2016, 11:17 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16731
Репутация: 6530 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
А так?
[vba]
Код
If InStr(cBoxTipBay, ChrW(KeyAscii)) = 0 Then KeyAscii = 0
[/vba]
Это Юникод, его ест ChrW


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА так?
[vba]
Код
If InStr(cBoxTipBay, ChrW(KeyAscii)) = 0 Then KeyAscii = 0
[/vba]
Это Юникод, его ест ChrW

Автор - _Boroda_
Дата добавления - 06.06.2016 в 11:17
lopuxi Дата: Понедельник, 06.06.2016, 11:21 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
А так?


Тоже самое.
При Русской раскладке, на заглавную букву "М" KeyAscii выдает 1052

Но если вернуть On Error Resume Next
То работает.

Спасибо )


О_о ...и так можно было?

Сообщение отредактировал lopuxi - Понедельник, 06.06.2016, 11:27
 
Ответить
Сообщение
А так?


Тоже самое.
При Русской раскладке, на заглавную букву "М" KeyAscii выдает 1052

Но если вернуть On Error Resume Next
То работает.

Спасибо )

Автор - lopuxi
Дата добавления - 06.06.2016 в 11:21
_Boroda_ Дата: Понедельник, 06.06.2016, 11:28 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16731
Репутация: 6530 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
на заглавную букву "М" KeyAscii выдает 1052

Ну и что? Вы полностью весь код формы попробуйте
если вернуть On Error Resume Next

Не нужно ничего возвращать, вот так все прекрасно работает
[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]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
на заглавную букву "М" KeyAscii выдает 1052

Ну и что? Вы полностью весь код формы попробуйте
если вернуть On Error Resume Next

Не нужно ничего возвращать, вот так все прекрасно работает
[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]

Автор - _Boroda_
Дата добавления - 06.06.2016 в 11:28
lopuxi Дата: Понедельник, 06.06.2016, 11:35 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
Не нужно ничего возвращать, вот так все прекрасно работает


Да. Верно. Работает и без On Error Resume Next

ChrW просто расширил допустимый диапазон значений для Chr. Прикольно)

Спасибо!! Пойду дальше писать )


О_о ...и так можно было?

Сообщение отредактировал lopuxi - Понедельник, 06.06.2016, 11:35
 
Ответить
Сообщение
Не нужно ничего возвращать, вот так все прекрасно работает


Да. Верно. Работает и без On Error Resume Next

ChrW просто расширил допустимый диапазон значений для Chr. Прикольно)

Спасибо!! Пойду дальше писать )

Автор - lopuxi
Дата добавления - 06.06.2016 в 11:35
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!