Проверка данных формы пользователя с помощью Excel VBA - PullRequest
0 голосов
/ 23 мая 2018

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

Private Sub TextBox1_Change()
wt = TextBox1.Value
If wt >= 0 And wt <= 1 Then

        Range("Wt!B2").Value = wt

 Else

         MsgBox "Enter a number between 0 and 1"

 End If
 End Sub

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

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Измененный код приведен ниже.

Dim flag As Integer
Private Sub CommandButton2_Click()

  If flag = 1 Then

      MsgBox "Enter values between 0 and 1"
  Else
    Range("Wt!B2").Value = TextBox1.Value
    Unload Me
  End If
End Sub


Private Sub TextBox1_Change()
 Dim wt As Double, new_value As Double
 TextBox1.SetFocus
If IsNumeric(TextBox1.Value) Then
    new_value = CDbl(TextBox1.Value)
Else
    new_value = 0
End If
wt = new_value
DataValidate (wt)
End Sub

Sub DataValidate(wt)

If wt >= 0 And wt <= 1 Then

   'do nothing

Else
   flag = 1

End If
End Sub
0 голосов
/ 23 мая 2018

Множество вариантов.Это зависит от ваших личных предпочтений.

Вас раздражает, что вы получаете сообщение об ошибке сразу после нажатия неверной клавиши?Я считаю это хорошим поведением.

Вас раздражает, что вы получаете сообщение об ошибке, когда текстовое поле очищается?Попробуйте

If wt >= 0 And wt <= 1 Or wt = "" Then
if wt <> "" then Range("Wt!B2").Value = wt

Лично я не считаю текстовое поле подходящим элементом управления, по сути, бинарным выбором.Вы рассматривали кнопку переключения?

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