Страницы: 1
RSS
Ограничение ввода десятичной запятой в textbox.
 
Доброго времени суток.

 Прошу помочь с проблемой ограничения ввода количества запятых в текстбоксах. Пытался ограничить путем дезактивации кнопки ",". Однако не вышло. Дайте какую нить идею, как можно в данном коде это реализовать.
 
ограничить чем?
Если например одним то
Код
 If InStr(ActiveControl, ",") = 0 Then ActiveControl = ActiveControl & ","

или
Код
If UBound(Split(ActiveControl, ",")) < 1 Then ActiveControl = ActiveControl & ","

1 можно заменить на то количество запятых что допустимо. нужно проверять чтоб не подряд, то другой разговор....
По вопросам из тем форума, личку не читаю.
 
Цитата
Beginer_78 написал:
в данном коде
можно так
Код
Private Sub cmdDrob_Click()
    If Len(ActiveControl) = 0 Then Exit Sub
    If Len(ActiveControl) - Len(Replace(ActiveControl, ",", "")) > 0 Then Exit Sub
    ActiveControl = ActiveControl & ","
End Sub


хотя реализация в общем достаточно корявая.
 
Ура! Вопрос вроде решился.
БМВ, спасибо за помощь.
 
Вариант от Игоря:

Код
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

Страницы: 1
Наверх