有个文本框职能限定输入正整数文本框初始值为0
我在LostFocus事件里写的判断语句:
Private Sub Text1_LostFocus(Index As Integer)   If VarType(Text1(Index).Text) <> 2 Then  '  判断是否是整数
      MsgBox ("请输入整数!")
      Text1(Index).SetFocus
      Exit Sub
   End IfEnd Sub结果问题就是:不改该文本框的内容(默认值为0),不报错
改了文本框里的数值,不管是正整数、还是其他的字符,失去焦点时都报MsgBox ("请输入整数!")不知道怎么回事?请帮帮我,我没学过VB,这都是我自己摸索的,谢谢各位!

解决方案 »

  1.   

    Private Sub Text1_KeyPress(Index As Integer,KeyAscii As Integer)
        If keyasii < 48 Or KeyAscii > 57 Then
              MsgBox ("请输入整数!") 
          Text1(Index).SetFocus End Sub
      

  2.   

    用LostFocus事件就不对,第一个文本框的焦点移到第二个,验证第一个,不通过,把焦点移回到第一个,又触发了LostFocus事件
    直接控制只能输入数字,而且不能以0开头就可以了
      

  3.   

    刚试过了,不行因为不止一个文本框输入,其他是可以输文本字符的,我用文本框数组做的
    就text1(4)是要求输入正整数的
      

  4.   

    Private Sub Text1_KeyPress(Index As Integer,KeyAscii As Integer) 
       if index=4 then 
          If keyasii < 48 Or KeyAscii > 57 Then 
              MsgBox ("请输入整数!") 
              Text1(Index).SetFocus 
          end if
        end if
    End Sub
      

  5.   

    谢谢jhone99 的热心解答但是我试了一下,还是有问题不改text1(4)的内容(默认值为0),不报错当我按下数字键(1-9整数)时,就立马弹出MsgBox ("请输入整数!") 我点了确定后,text1(4)变成整数数字,失去焦点后不再报错,成功!但是!!!!!!!!!!!再试验一下:当我按下字母键(a-z)时,就立马弹出MsgBox ("请输入整数!") 我点了确定后,text1(4)变成字母,失去焦点后也不报错!!!不行啊!
      

  6.   

    http://zhidao.baidu.com/question/55029251.html
      

  7.   

    就是上面这个链接,我改了一下:
    Option ExplicitPrivate Sub Form_Load()
            Text1.Text = vbNullChar
    End SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)
            If KeyAscii <> 8 Then
                Dim re
                Set re = CreateObject("VBScript.RegExp")
                re.IgnoreCase = True
                re.Global = True
                re.Pattern = "^([1-9](\d+)?)?$"
                If Not re.test(Text1.Text & Chr(KeyAscii)) Then
                   KeyAscii = 0
                End If
            End If
    End Sub
      

  8.   

    Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
      If Index = 4 Then
          If KeyAscii < 48 Or KeyAscii > 57 Then
              MsgBox ("请输入整数!")
              KeyAscii = 0
          End If
        End IfEnd Sub
      

  9.   

    jhone99 ,能加你好友吗?QQ14076449
      

  10.   

    jhone99,再请教下,如果文本框限制是大于0的数字(可以是小数的)
    KeyAscii 该如何限制?
      

  11.   

    Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
      If Index = 4 Then
          If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 46 Then
              MsgBox ("请输入整数!")
              KeyAscii = 0
          End If
        End IfEnd Sub
      

  12.   

    jhone99,谢谢你,都调试出来了!