значение заданного количества в пользовательской форме Excel vba не может быть меньше 0 - PullRequest
0 голосов
/ 07 марта 2019

Я делаю пользовательскую форму, которая используется для ввода предмета в мой инвентарь. Я хочу, чтобы количество, которое пользователь вводил, не могло быть меньше 0, чтобы мои сотрудники не могли вычесть мой товар.

Я написал такой код для него, но когда я ввожу -1, значение количества все еще вычитается.

If tbQty.Value > 0 Then
    lastRow2 = .Range("A" & Rows.Count).End(xlUp).Row + 1
    .Range("A" & lastRow2).Value = CDate(tbDate)
    .Range("B" & lastRow2).Value = str
    .Range("C" & lastRow2).Value = tbColor.Value
    .Range("D" & lastRow2).Value = Val(tbQty.Value)
    .Range("E" & lastRow2).Value = Val(tbPrice.Value)
    .Range("G" & lastRow2).Value = UCase(tbProduct.Value)
End If

1 Ответ

1 голос
/ 07 марта 2019

Я предполагаю, что вы используете VBA UserForm для ввода данных. Если пользователь записывает число в текстовое поле (скажем, TextBox1), вы можете запретить ввод отрицательного числа (или чего-либо, кроме неотрицательного числа) с помощью Event Caller:

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case 46, 48 To 57
        Case Else
        KeyAscii = 0
    End Select
End Sub

Этот код разрешает ввод десятичного неотрицательного числа (с . в качестве десятичного разделителя). Если в вашей стране (как у меня) вы используете для этого запятые, замените Case 46, 48 To 57 на Case 44, 48 To 57.

После этого вам просто нужно беспокоиться о получении значения ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...