希望控制text1中只能输入数字0-9,
Private Sub text1_keypress(KeyAscii As Integer)
    Dim bOK As Boolean
    If KeyAscii>=Asc("0") And KeyAscii<=Asc("9") Then
        bOK=Val(text1&Chr(KeyAscii))<1 or Val(text1&Chr(KeyAscii))>10
        if bOK Then
            Msgbox "Error"
        End If
    End If
End Sub
================================================
搞不明白的地方是"Val(text1&Chr(KeyAscii))",请高手解答,为什么不可以直接用"Val(Chr(KeyAscii))"

解决方案 »

  1.   

    加了这一句
    bOK=Val(text1&Chr(KeyAscii))<1 or Val(text1&Chr(KeyAscii))>10
    如果输入的值与文本框组合成的数字小于1或大于10的时候就报错.
      

  2.   

    Select Case KeyAscii
        Case Asc("0") to Asc("9")
        Case Esle
             MsgBox "Error"
             KeyAscii=0'吃掉它
    End Select
      

  3.   

    搞不明白的地方是"Val(text1&Chr(KeyAscii))",请高手解答,为什么不可以直接用"Val(Chr(KeyAscii))"因为发生KeyPress事件时还没有将KeyAscii加到Text上,如果这个时候将KeyAscii设为0,那么就等于用户没有输入了。上面的代码开始理解错误,并不是你要的功能。
      

  4.   

    还是有点不明白,
    发生KeyPress事件时还没有将KeyAscii加到Text上是什么意思?
    那如果我用鼠标先将text1中的内容先选中,然后再输入数值会怎么样呢?
      

  5.   

    Val(text1&Chr(KeyAscii))这样写是为了说明这个文本矿中只能输入1~10之间的数字。发生KeyPress事件时还没有将KeyAscii加到Text上是什么意思?
    -----------------------------------------------------
    就是这个时候你打进去的字符还没有被显示到控件中。在keypress事件中被截获了,因为需要对他进行筛选,只有符合条件的字符允许被显示到控件中.
      

  6.   

    那如果我用鼠标先将text1中的内容先选中,然后再输入数值会怎么样呢?
    -------------------------------------------------------------
    效果一样。
      

  7.   

    那如果我的text1的默认值是5,那我在text1中输入1,
    结果Val(text1&Chr(KeyAscii))的值是不是等于51?