1、 新建一个标准EXE程序。
2、 绘制界面,添加一个 Textbox 控件,改名为 txbNumber。
3、 编写代码。在代码窗口中,添加 txbNumber_KeyPress 事件。
4、查ASCII码表,得到0的ASCII码是48。输入以下语句:
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
这条语句用来判断输入的字符是否在0-9的范围,如果不在这个范围,就把这个输入的字符屏蔽掉。
5、但这么做会产生一个问题,就是使用BackSpace删除字符的时候,由于按键被屏蔽,无法删除。只要在上面的语句前在添加一条语句:If KeyAscii = 8 Then Exit Sub,意思是,如果按了BackSpace,就直接退出该过程,按键就不会被屏蔽了。
6、调试运行。按F5,在文本框中输入任意字符,可以看到只有数字能显示在文本框中。按退格键,字符也能正常删除。
7、 如果输入的数字可能是小数,那么还要添加如下代码:
If KeyAscii = 46 And Not CBool(InStr(txbNumber, ".")) Then Exit Sub
当输入小数点时,程序判断文本框中是否已有小数点(因为一个小数中不可能有多个小数点),如果没有小数点,则允许输入。
1、新建一个标准EXE程序。
2、 绘制界面,添加一个 Textbox 控件,改名为 txbNumber。
3、 编写代码在代码窗口中,添加 txbNumber_KeyPress 事件。
4、输入以下语句: If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0这条语句用来判断输入的字符是否在0-9的范围,如果不在这个范围,就把这个输入的字符屏蔽掉。
5、 但这么做会产生一个问题,就是使用BackSpace删除字符的时候,由于按键被屏蔽,无法删除只要在上面的语句前在添加一条语句:If KeyAscii = 8 Then Exit Sub
6、 调试运行按F5,在文本框中输入任意字符,可以看到只有数字能显示在文本框中。按退格键,字符也能正常删除。
(二楼那个不能输入小数点和科学计算,还有其他进制,我重新编了一个,要事先把文本框的tag属性设为"0")
Private Sub Text1_Change()
If IsNumeric(Text1.Text) Then
Text1.Tag = Text1.Text
End If
End Sub
Private Sub Text1_LostFocus()
If Text1.Text = "" Then Text1.Text = "0": Exit Sub
If Not IsNumeric(Text1.Text) Then
If MsgBox("只能输入数字!单击“是”重新编辑。", vbYesNo) = vbYes Then
Text1.SetFocus
Else
Text1.Text = Val(Text1.Tag)
End If
End If
End Sub
如需特殊的数字要求(比如只能输入整数,不能为0等,请继续追问,很愿意为你解答
添加以下事件即可。
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub
用NumericUpDown
或者MaskedTextBox设置Mask = 9999.99