Private Sub Command1_Click()
a = CInt(Text1.Text)             
Select Case a
Case Is > 100
Label1.Caption = "不匹配"
Case 90 To 100                     
Label1.Caption = "优"
Case Is >= 80                      
Label1.Caption = "良"
Case Is >= 30 + 30             
Label1.Caption = "及格"
Case Is >= 0
Label1.Caption = "不及格"
End Select
End Sub这段垃圾代码有点问题,,就是当文本框输入的不是整形的时候,,就会出错,,有什么办法,,可以让输入不是整形的时候,不出错,,

解决方案 »

  1.   

    ' 换了个方式,下面的代码能让Text中只能输入0-100之间的整数
    ' 提示一下,好的代码要注意缩进,变量也要声明。  :)Option ExplicitPrivate Sub Command1_Click()
    Dim a As Long
    a = CLng(Text1.Text)
    Select Case a
        Case Is > 100
            Label1.Caption = "不匹配"
        Case 90 To 100
            Label1.Caption = "优"
        Case Is >= 80
            Label1.Caption = "良"
        Case Is >= 30 + 30
            Label1.Caption = "及格"
        Case Is >= 0
            Label1.Caption = "不及格"
    End Select
    End SubPrivate Sub Form_Load()
        Text1.Text = ""
        Text1.MaxLength = 3
    End SubPrivate Sub Text1_Change()
        On Error Resume Next
        If Len(Text1.Text) = 3 Then
            If CLng(Text1.Text) > 100 Then Text1.Text = "0": Text1.SelStart = 1
        End If
    End SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)
        If (KeyAscii < Asc("0") Or KeyAscii > Asc("9")) And KeyAscii <> vbKeyBack Then KeyAscii = 0
    End Sub
      

  2.   

    clng(text1.text),这个不会去掉小数。
    如果不想让别人输入非数值字符,那可以在key_press里设置,搜索一下,很多。
      

  3.   

    Private Sub Text1_KeyPress(KeyAscii As Integer)
        If (KeyAscii < Asc("0") Or KeyAscii > Asc("9")) And KeyAscii <> vbKeyBack Then KeyAscii = 0
    end sub 请问这句话是什么意思呢?  谢谢你耐心的解答
      

  4.   

    Private Sub Command1_Click()
    a = CInt(Text1.Text)             
    Select Case a
    Case Is > 100
    Label1.Caption = "不匹配"
    Case 90 To 100                     
    Label1.Caption = "优"
    Case Is >= 80                      
    Label1.Caption = "良"
    Case Is >= 30 + 30             
    Label1.Caption = "及格"
    Case Is >= 0
    Label1.Caption = "不及格"
    case else
    msgbox "非法输入"
    End Select
    End Sub
      

  5.   

    Private Sub Command1_Click()a = Text1.Text    '
    b=vartype(a)      '这个函数是判断变量类型的
      

  6.   

    用val可以吧?大不了再加int()
      

  7.   

    goodname008(卢培培,想学好VB) 的思路正确。当然还有空串、0开头的不合格式数字等问题。
    不过作输入正确性判断确实很麻烦。简单一点可以用On Error Resume Next解决。
      

  8.   

    请问这句是什么意思,,我不明白
    Option Explicit我的QQ是51433480
    大家可以和我交流一下
      

  9.   

    option explicit 这句话是验证的句子
        比如说,我们在程序中使用一个变量,如果事先我们没有声明,在编译的过程中可能就会出错,而且查找起来非常的麻烦。为此,在程序的头部加上一个option explicit这个句子,可以帮助我们判断某个变量是不是被声明过。
                                                           我的qq 103483990
      

  10.   

    to 楼主:
    说白了 Option Explicit 就是强制声明变量.to visualmm(虚拟小美女) :
    Private Sub Text1_KeyPress(KeyAscii As Integer)
        If (KeyAscii < Asc("0") Or KeyAscii > Asc("9")) And KeyAscii <> vbKeyBack Then KeyAscii = 0
    end sub
    只能让文本框中输入数字和退格.