VB怎么控制textbox 只能输入正整数????

我想设定text1只能输入正整数,以下是代码:PrivateSubText1_Validate(CancelAsBoolean)IfNotIsNumeric(Text1)... 我想设定text1只能输入正整数,以下是代码:

Private Sub Text1_Validate(Cancel As Boolean)
If Not IsNumeric(Text1) Or Val(Text1) Mod 1 <> 0 Or Val(Text1) < 0 Then
MsgBox "请输入一个正整数。", vbCritical, "错误"
Cancel = True
End If
End Sub

可是为什么还是可以输入小数啊!!!到底错在哪?望高手指点。
最好在我原来的上面找出错误改一下,谢谢!
展开
 我来答
沙慧月03
推荐于2016-05-04 · TA获得超过2154个赞
知道大有可为答主
回答量:2717
采纳率:100%
帮助的人:3576万
展开全部
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then
MsgBox "请输入一个正整数。", vbCritical, "错误"
Cancel = True
KeyAscii=0
end if

End Sub
你那错误有几个,
1.Text1_Validate函数是获得当前焦点,在你输入后当前焦点变为下一个,即空格,所以你会出错
2.IsNumeric(Text1)应该为IsNumeric(Text1.text)这样才能获得text1的值,
tianqing20wen

2010-07-31 · TA获得超过2.4万个赞
知道大有可为答主
回答量:8226
采纳率:88%
帮助的人:4990万
展开全部
Validate事件 在焦点转换到一个(第二个)控件之前发生 也就是和其他控件切换焦点之前 用此事件来做判断也未尝不可

Private Sub Text1_Validate(Cancel As Boolean)
If IsNumeric(Text1.Text) = True Then
If Fix(Text1.Text) <> Text1.Text Then
MsgBox "请输入一个正整数。", vbCritical, "错误"
Cancel = True
End If
Else
MsgBox "请输入一个正整数。", vbCritical, "错误"
Cancel = True
End If
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wannalcxl
2010-07-31 · TA获得超过259个赞
知道小有建树答主
回答量:640
采纳率:0%
帮助的人:615万
展开全部
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode < 48 Or KeyCode > 57 Then
MsgBox "请输入一个正整数。", vbCritical, "错误"
Cancel = True
End If
End Sub

应该使用keydown事件,用keypress的话,小键盘输入时,也会出现错误提示。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zgwxm
2010-07-31 · TA获得超过2.1万个赞
知道大有可为答主
回答量:3567
采纳率:87%
帮助的人:2599万
展开全部
'加上下面的过程
Sub Text1_KeyPress(KeyAscii As Integer)
If (KeyAscii < 48 Or KeyAscii > 57) Then
KeyAscii = 0
End If
End Sub
更多VB代码,请参阅我的博客:http://hi.baidu.com/zgmg
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式