Страницы: 1
RSS
VBA Ограничение на тип данных вводимых в TextBox
 
Здравствуйте.

Можно ли ограничить тип данных которые будут вводиться в TextBox юзерформы?
В поле должны вводиться исключительно числовые значения. Буквы и прочие символы запретить.
 
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=107695&MID=s

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Код
Private Sub TextBox1_Change()
    If Not IsNumeric(TextBox1.Value) Then
        TextBox1.Value = ""
    End If
End Sub

———
UPD:
Цитата
Jack Famous написал:
а десятичную часть как вводить?
А она разве нужна? Мы ведь реальной задачи не видим...
А если понадобится, то сделаем или найдем готовое решение.
———
Ігор Гончаренко,  дошел бы, если бы автор отписался, а Вам и Jack Famous это решение никчему.
Изменено: DANIKOLA - 12.04.2022 21:23:47
 
Цитата
DANIKOLA: If Not IsNumeric
а десятичную часть как вводить?
Изменено: Jack Famous - 12.04.2022 17:54:45
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Код
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    txt = Me.TextBox1 ' читаем текст из поля (для недопущения ввода двух и более запятых)
    If InStr(1, txt, ",") > 0 And Len(txt) - InStr(1, txt, ",") = 2 Then KeyAscii = 0 ' только 2 цифры после запятой
    Select Case KeyAscii
        Case 8: ' нажат Backspace - ничего не делаем
        Case 44: KeyAscii = IIf(InStr(1, txt, ",") > 0, 0, 44) ' если запятая уже есть - отменяем ввод символа
        Case 46: KeyAscii = IIf(InStr(1, txt, ",") > 0, 0, 44) ' заменяем при вводе точку на запятую
        Case 48 To 57 ' если введена цифра - ничего не делаем
        Case Else: KeyAscii = 0 ' иначе отменяем ввод символа
    End Select
End Sub

http://www.planetaexcel.ru/forum.php?thread_id=36138
Изменено: New - 12.04.2022 18:41:55
 
Цитата
написал:
а десятичную часть как вводить?
а до этого вопроса автор не дошел...
когда окажется, что ему написали ТекстБокс, который не принимает НИЧЕГО кроме цифр (как и было сформулировано), он задумается как ввести 0.5, поллитра ТекстБокс тоже не примет, потому что там буквы
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Здравствуйте еще раз. Спасибо за ответы. А так да, забыл указать, что требуется еще и десятичная часть (2 знака после запятой), извините)
 
Цитата
DANIKOLA: А она разве нужна? Мы ведь реальной задачи не видим...А если понадобится, то сделаем или найдем готовое решение
полностью согласен, просто зацепился, что автор именно про ЧИСЛА написал, а не про ЦИФРЫ (вряд ли осознанно). К тому же проверка If TextBox1.Value Like "*[!0-9.]*" не сильно сложнее, чем IsNumeric()  :)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх