Страницы: 1
RSS
Проверка ввода числа в поле InputBox
 
Добрый день.
На форме есть листбокс для выбора товара. После выбора товара отображается InputBox для ввода количества .
Как правильно скорректировать код , что бы можно вводить число : например:3,67.
После ввода во втором листбоксе отображается товар и количество.
 
Код
Private Sub lBoxTovar_Click()
    Dim lUnits, sStart$
    Dim i
    sStart = lBoxTovar
    lUnits = InputBox(vbCrLf & Me.lBoxTovar.Value, "Ввод количества отгружаемого товара")
    If lUnits = "" Then Exit Sub  'если ничего не ввели
    If lUnits = False Then Exit Sub    'если нажали Cancel
    lUnits = Val(Replace(lUnits, ",", "."))
    If Not IsNumeric(lUnits) Then
        MsgBox "Ввод только чисел!", 64, "Сообщение": Exit Sub
    End If
    MsgBox "Вы ввели: " & lUnits, vbInformation, ""

    Me.lBoxTovCol.AddItem
    Me.lBoxTovCol.List(Me.lBoxTovCol.ListCount - 1, 0) = sStart$
    Me.lBoxTovCol.List(lBoxTovCol.ListCount - 1, 1) = lUnits
End Sub
и вводите хоть через точку, хоть через запятую
 
 Михаил С, благодарю за ответ, но можно еще подкорректировать.
Ввод нужно только через запятую,а  ввод  других символов  в том числе и букв запрещен.
Сейчас если я ввожу в поле букву , то пишет ноль и надо исправлять как то.
Заранее благодарен.
 
исправьте строчку
Код
lUnits = Val(Replace(lUnits, ",", "."))
на
Код
lUnits = Replace(lUnits, ".", ",")

точку вместо запятой воспринимать будет, буквы не пропустит.
Но если вдруг разделитель по умолчанию точка - работать не будет.
 
Михаил С , спасибо работает :)
 
Юрий, как вариант можно вызывать свою форму для ввода количества. И на событие KeyPress повешать обработчик, запрещающий ввод нелегитимных символов.
Скрытый текст
 
А чем не подходит метод Application.Inputbox с указанием типа вводимых данных Numeric?
 
LVL, все способы доступны к применению. Я исхожу из того, что приведенный мною код не позволяет пользователю ошибиться еще на этапе ввода.  
 
Разница в количестве строк кода, в моем варианте достаточно одной строки, а в вашем их 14...  
 
LVL, это, да.  Но я раз написал и тиражирую между проектами. Проблем не испытываю. Но это уже не имеет отношения к теме.  
 
Grr , спасибо за вариант ,но как привязать Ваш код к моему примеру .?
Я добавил поле textBox ,а как  связать textBox  с листбокс не знаю.
 
Как-то так (см вложение)
Я заменил Вашу строчку
Код
Units = InputBox(vbCrLf & Me.lBoxTovar.Value, "Ввод количества отгружаемого товара")
На вызов формы
Код
InsertCount.Show vbModal
 
Grr , спасибо Вам только есть одна ошибка: я ввожу число 3,78 ,а округляет до 4 . Можно скорректировать код?
 
А так?
 
В листбоксе надо ,что бы число отображалось через запятую.  
Страницы: 1
Читают тему
Наверх