Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2012, 21:11   #1
DAN1L
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 52
По умолчанию ASCII-коды, есть вопросик

Мне нужно что бы в TextBox вводить можно было только русские буквы и пробелы, как сделать только русские буквы я нашел, а вот с пробелом не могу, подскажите)
Код:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < "192" Then
MsgBox "Недопустимый символ!"
KeyAscii = 0
End If
End Sub
DAN1L вне форума Ответить с цитированием
Старый 25.12.2012, 21:20   #2
С.М.С
Участник клуба
 
Аватар для С.М.С
 
Регистрация: 29.12.2008
Сообщений: 1,598
По умолчанию

Ну а пробел вроде 32 в десятичной, надо уточнить, вот и добавьте в условие.
С.М.С вне форума Ответить с цитированием
Старый 25.12.2012, 21:22   #3
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Вот так можно смотреть ASCII-код символа, который вводят в TextBox:
Код:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    MsgBox KeyAscii
End Sub
Хотя сейчас ещё раз стал тестировать, для русских букв Юникод кажется показывает.

Последний раз редактировалось Скрипт; 25.12.2012 в 21:25.
Скрипт вне форума Ответить с цитированием
Старый 25.12.2012, 22:41   #4
С.М.С
Участник клуба
 
Аватар для С.М.С
 
Регистрация: 29.12.2008
Сообщений: 1,598
По умолчанию

ТС Вы поняли, что надо сделать или не совсем?
С.М.С вне форума Ответить с цитированием
Старый 26.12.2012, 00:09   #5
DAN1L
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 52
По умолчанию

Цитата:
Сообщение от С.М.С Посмотреть сообщение
ТС Вы поняли, что надо сделать или не совсем?
Задаю обычное условие через "и" не работает, и так уже и так, и выделял что бы до 31 и от 33 до 192 значения просматривались, все равно не идет
DAN1L вне форума Ответить с цитированием
Старый 26.12.2012, 00:21   #6
С.М.С
Участник клуба
 
Аватар для С.М.С
 
Регистрация: 29.12.2008
Сообщений: 1,598
По умолчанию

да вроде работает

Код:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < "192" And KeyAscii <> "32" Then
MsgBox "Недопустимый символ!"
KeyAscii = 0
End If
End Sub
С.М.С вне форума Ответить с цитированием
Старый 26.12.2012, 11:18   #7
DAN1L
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 52
По умолчанию

Цитата:
Сообщение от С.М.С Посмотреть сообщение
да вроде работает

Код:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < "192" And KeyAscii <> "32" Then
MsgBox "Недопустимый символ!"
KeyAscii = 0
End If
End Sub
Мда, беда у меня)) нужно повторить условия)) Спасибо и правда все работает)
DAN1L вне форума Ответить с цитированием
Старый 26.12.2012, 12:36   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

так, общее замечание:
KeyAscii - это число и корректнее было бы сравнивать его с числами, а не со строками, в которых записаны числа.

If KeyAscii < 192 And KeyAscii <> 32 Then...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 26.12.2012, 13:01   #9
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Цитата из встроенной справки VBA по событию "KeyPress":
KeyANSI (хотя здесь Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) указано KeyAscii)
Required. An integer value that represents a standard numeric ANSI key code.

Но у русской буквы "А" ANSI-код 192.

А событие "KeyPress" даёт число 1040.

Почему несовпадение по кодам? Ошибка в справке? Ведь 1040 - это Unicode-код буквы "А".

Последний раз редактировалось Скрипт; 26.12.2012 в 13:11.
Скрипт вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ASCII коды Farrel Общие вопросы C/C++ 4 07.03.2011 17:44
ASCII коды, если можно, то все. Иван=) Помощь студентам 4 03.11.2010 22:17
Паскаль, ASCII коды и файлы netcher Помощь студентам 13 26.05.2009 10:23
ASCII коды Strogg Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 03.04.2009 17:09