Двойной дисплей сообщений - VBA - PullRequest
0 голосов
/ 20 октября 2018

В следующем коде отображается сообщение об ошибке, если значение введено неправильно.Сообщение об ошибке отображается снова при удалении неправильного значения из-за пустого поля.Как я могу снова остановить отображение сообщения?

Private Sub textbox1_Change()
   If TextBox1 < 1 Or TextBox1 > 31 Then
   Beep
   MsgBox "Please enter numbers between 1 and 31."
   TextBox1= ""
   TextBox1.SetFocus
   End If
End Sub

Ответы [ 2 ]

0 голосов
/ 20 октября 2018
Private Sub textbox1_Change()
    Select Case True
        Case Len(TextBox1.Text) = 0

        Case TextBox1.Value < 1 Or TextBox1.Value > 31
            Beep
            MsgBox "Please enter numbers between 1 and 31."
            TextBox1 = ""
            TextBox1.SetFocus

    End Select
End Sub

или

Private Sub textbox1_Change()
    If Len(TextBox1.Text) = 0 Then Exit Sub

    If TextBox1 < 1 Or TextBox1 > 31 Then
        Beep
        MsgBox "Please enter numbers between 1 and 31."
        TextBox1 = ""
        TextBox1.SetFocus
    End If
End Sub
0 голосов
/ 20 октября 2018
Private Sub textbox1_Change()
   Static self_protect As Boolean

   If self_protect Then Exit Sub

   If TextBox1 < 1 Or TextBox1 > 31 Then
       Beep
       MsgBox "Please enter numbers between 1 and 31."

       self_protect = True
       TextBox1 = ""
       TextBox1.SetFocus
       self_protect = False
   End If
End Sub
...