怎样让TextBox只能输入数字?

999String999 2007-08-15 05:34:57
RT
谢谢!
...全文
3774 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
fafafabbb 2012-02-15
  • 打赏
  • 举报
回复
顶顶顶顶顶顶顶顶顶顶顶顶顶顶
qiananzong01 2007-11-21
  • 打赏
  • 举报
回复
Private Sub Txt_KeyPress(KeyAscii As Integer)
Select Case KeyAscii

Case 45
If Txt.SelStart = 0 Then '判断“-”是否是在开始位置
Else
MsgBox "不是数字"
KeyAscii = 0
End If

Case 48 To 57
Case 8 '判断是否为退格符

Case 46 '判断是否为为小数点
If Txt.Text <> "" And k = 0 Then
k = k + 1
Else
KeyAscii = 0
End If

Case Else
KeyAscii = 0

End Select
End Sub
感觉这样比较完整些
PcrazyC 2007-11-21
  • 打赏
  • 举报
回复
Public Sub TXT_change(TXTB As TextBox)
Dim TXT As String
TXT = TXTB.Text
If TXT <> "" Then
Dim Str As String
Str = Right(TXT, 1)
If Not (StrComp(Str, "0") <> -1 And StrComp("9", Str) <> -1) Then '输入的字符在1-9之外
If Not (StrComp(Str, "A") <> -1 And StrComp("Z", Str) <> -1) Then '输入的字符在A-Z之外
If Not (StrComp(Str, "a") <> -1 And StrComp("z", Str) <> -1) Then '输入的字符在a-z之外
MsgBox "对不起,您不能输入非法字符,请您重新输入!", vbOKOnly + vbExclamation, "温馨提示"
Clipboard.SetText Left(TXTB, Len(TXT) - 1)
TXTB = ""
TXTB.SelText = Clipboard.GetText
End If
End If
End If
End If
End Sub


我以前写的一个函数,用来防止文本框中输入除字母和数字以外的,你可以自己改下
tingting1123 2007-11-21
  • 打赏
  • 举报
回复
人工智能...
还想懒够 2007-11-21
  • 打赏
  • 举报
回复
正则是真理

IsNumeric判断还是有些许问题的
这个函数会把科学计数法以及十六进制的认为是数字
KevinI668 2007-11-19
  • 打赏
  • 举报
回复
頂一下!!!
lei0571215 2007-10-24
  • 打赏
  • 举报
回复
学习了
NextMoon 2007-10-23
  • 打赏
  • 举报
回复
同上
china_lm 2007-10-05
  • 打赏
  • 举报
回复
受教.
嗷嗷叫的老马 2007-10-05
  • 打赏
  • 举报
回复
............强啊
of123 2007-10-04
  • 打赏
  • 举报
回复
我的方法:

Public Function Numeric_Only(Bybal x As Integer) As Integer
Select Case x
Case 8, 9, 13, &H30 To &H39, Asc(".") '可以根据需要增减
Numeric_Only = x
Case Else
Numeric_Only = 0
End Select
End Function

Public Function Hex_Only(Bybal x As Integer) As Integer
Select Case x
Case 8, 9, 13, &H30 To &H39, Asc("A") To Asc("F")
Hex_Only = x
Case Asc("a") To Asc("f")
Hex_Only = x - 32
Case Else
Hex_Only = 0
End Select
End Function

调用:
Private Sub Text1_KeyPress(KeyAscii As Integer)
'只能输入数字
KeyAscii = Numeric_Only(KeyAscii)
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
'只能输入十六进制数字
KeyAscii = Hex_Only(KeyAscii)
End Sub
Sandrer 2007-10-04
  • 打赏
  • 举报
回复
支持二楼的!!
用二楼的代码,设置完毕后就可以不用加判断进去了。
减少系统资源的消耗(虽然非常小)
李白丢了墨镜 2007-10-04
  • 打赏
  • 举报
回复
人工智能版:

眼睛一直盯着小键盘上面的0,1,2,3,4,5,6,7,8,9 不要按错了,那么就绝妙地解决了些问题.


现在都21世纪了,要学习人工智能的应用.哈哈,,,,看来我已经天下独步了....
嗷嗷叫的老马 2007-09-28
  • 打赏
  • 举报
回复
不错~~顶了

具体使用时再看吧,嘿嘿
vbman2003 2007-09-28
  • 打赏
  • 举报
回复
正则
guyehanxinlei 2007-09-28
  • 打赏
  • 举报
回复
IsNumeric(text1.text)
cmdlang 2007-09-27
  • 打赏
  • 举报
回复
Dim flg As Boolean '判断是否允许输入小数点

Private Sub Form_Load()
flg = True '促使允许输入小数点
End Sub

Private Sub Text1_Change()
If Not IsNumeric(Text1.Text) Then
Text1.Text = ""
MsgBox "只能输入数字!", vbOKOnly + vbExclamation, "错误"
Exit Sub
End If
If (Not flg) And InStr(1, Text1.Text, ".") = 0 Then '判断小数点是否被删除,如果被删除,则允许再次输入
flg = True
End If
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If (KeyAscii < vbKey0 Or KeyAscii > vbKey9) And KeyAscii <> vbKeyBack And KeyAscii <> 46 Then
KeyAscii = vbCancel
End If
If KeyAscii = 46 Then '如果键入小数点,则判断当前是否允许输入
If flg Then
flg = False
Else
KeyAscii = vbCancel
End If
End If
End Sub

不知以上是否还有漏洞,请各位指点
  • 打赏
  • 举报
回复
在change事件中 用isnumeric函数判断好了 如果不是数字就返回上次状态 相当于ctrl+z
gyzxb 2007-09-27
  • 打赏
  • 举报
回复
学到了一点!
嗷嗷叫的老马 2007-09-08
  • 打赏
  • 举报
回复
嗯,这个也快一个月了........
加载更多回复(10)

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧