有没有一种方法可以防止文本框接受字母?

时间:2019-05-07 16:00:52

标签: excel vba

我有以下代码,如果您键入的不是数字,则会给出错误消息:

Private Sub TextBox3_Change()
    If Not IsNumeric(TextBox3.Value) Then
        MsgBox "Only digits (0-9) allowed."
        Cancel = True
    End If
End Sub

问题是,如果我要在框中键入字母,它会给我错误消息,但仍将字母写在框中。我希望代码完全阻止任何非数字的输入。

4 个答案:

答案 0 :(得分:1)

您可以清除文本框中的值。

Private Sub TextBox3_Change()
    If Not IsNumeric(TextBox3.Value) Then
        MsgBox "Only digits (0-9) allowed."
        TextBox3.Value = ""
        Cancel = True
    End If
End Sub

或者,如果您不想删除所有内容,则可以删除最后输入的字符。

Private Sub TextBox3_Change()
    If Not IsNumeric(TextBox3.Value) Then
        MsgBox "Only digits (0-9) allowed."
        TextBox3.Value = Left(TextBox3.Value,Len(TextBox3.Value) - 1)
        Cancel = True
    End If
End Sub

答案 1 :(得分:0)

您可以使用KeyPress事件首先停止任何非数字条目。

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If Not (KeyAscii >= 48 And KeyAscii <= 57) Then
    KeyAscii = 0
End If

End Sub

答案 2 :(得分:0)

u可以使用按键事件

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
   If Not IsNumeric(Chr(KeyCode)) Then
      KeyCode = 0
   End If
End Sub

答案 3 :(得分:0)

您应该使用KeyPress事件

Private Sub TextBox3_KeyPress(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles TextBox3.KeyPress
    Dim sKeys As String = "1234567890"
    If Not sKeys.Contains(e.KeyChar.ToString()) Then e.Handled = True
End Sub