Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Запрет ввода букв в TextBox


Автор: olga90 31.3.2008, 12:32
мне нужно, чтобы в TextBox вводились лишь ЦИФРЫ, точка и запятая
а буквы и остальные симаолы игнорировались

что писать в событии KeyPress компонента?

так вываливается ошибка  при вводе букв в поле

Код

Const AllowedChars As String = "0123456789"
...
Private Sub textbox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   If InStr(AllowedChars, Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

Автор: olga90 2.4.2008, 07:56
????????

Автор: ИгнатьевАлексей 2.4.2008, 10:01
olga90,   функция Chr не хочет работать с кириллицей, вот и ошибки валятся.

Я бы сделал так
Код

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     If Not (KeyAscii >= 48 And KeyAscii <= 57) Then KeyAscii = 0
End Sub

ну а точку и запятую, думаю,  добавишь сама
Удачи

Автор: LOPUH 2.4.2008, 10:32
Немножко добавлю..
В  подобных случаях я обычно юзаю метод InputBox. Он хорош тем ,что производится автоматическая проверка введенных данных.  В Вашем случае:
Код

Option Explicit

Sub Example()
Dim Val As Integer

Worksheets("Лист1").Activate
Val = Application.InputBox( _
    prompt:="Введите число", Type:=1)

End Sub


 тип 1 -это числовой тип.
Но для ввода ряда чисел наверно TextBox  удобнее..

Автор: mihanik 4.4.2008, 23:39
LOPUH, не факт, что olga90,  использует Excel.


Автор: LOPUH 5.4.2008, 07:51
Цитата(mihanik @  4.4.2008,  23:39 Найти цитируемый пост)
LOPUH, не факт, что olga90,  использует Excel.


mihanik, смотри название темы  smile  
Да , хочу спросить как у модератора, я на форуме недавно..  Стоит ли  добавлять  в тему свой вариант ответа, если ответ уже получен.. Сам я часто юзаю поиск и ищу в старых топиках, и если есть несколько альтернативных решений вопроса,  то ответ  будет более полным.. Извините за оффтоп..

Автор: mihanik 5.4.2008, 13:12
Цитата(LOPUH @  5.4.2008,  07:51 Найти цитируемый пост)
mihanik, смотри название темы    


Принимаю замечание... Невнимателен был...

Цитата(LOPUH @  5.4.2008,  07:51 Найти цитируемый пост)
Стоит ли  добавлять  в тему свой вариант ответа, если ответ уже получен.. 


Если считаешь, что твой вариант стоит этого, то добавляй.
Но слишком уж старые топики не поднимай.
Смешно отвечать на годовалые вопросы.

А теперь ждём ответа olga90.

Автор: vovaking 4.1.2009, 22:05
Помогиет мне пожалуйста разобраться с этой функцией.
Мне необходимо что бы:
Эта процедура позволяюет организовать ввод начальных данных для выполнения расчета. Эта процедура будут необходима для контроля вводимых значений. В поле txta сохраняется только символы с кодами 0, 8, 44, 45, 48 To 57, 101, что соответствует цифрам от 0 до 9, символам «-», «,», команде Backspace и букве e. Все другие введенные символы аннулируются и в текстовом поле не отображаются.
Private sub txta_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Данные будут будут сохранены, если нажата клавиша Enter. 
 
Код

Private Sub txta_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    On Error GoTo L
    Lbl.ForeColor = RGB(0, 0, 0)
    LblСообщ.Caption = _
    "Закончив ввод, нажмите клавишу Enter!"
    LblСообщ.Visible = True
    Txta.ForeColor = RGB(0, 0, 0)
    Select Case KeyAscii
        Case 0, 8, 44, 45, 48 To 57, 101
    Case Else
    KeyAscii = 0
    End Select
    Exit Sub
    LblСообщ.ForeColor = RGB(255, 0, 0)
    LblСообщ.Caption = _
    "Это не число! Исправьте!"
L:   LblСообщ.Visible = True
    Txta.ForeColor = RGB(255, 0, 0)
End Sub


Помогите пожалуйста

Автор: mihanik 6.1.2009, 18:25
vovaking!!!
 smile 
Модератор: Пожалуйста, один топик - один вопрос.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)