如题,谢谢

解决方案 »

  1.   

    在KeyPress事件中处理KeyAscii,超过数字字符范围就将KeyAscii=0
      

  2.   


    KeyPress 事件
          此事件当用户按下和松开一个 ANSI 键时发生。语法Private Sub Form_KeyPress(keyascii As Integer)Private Sub object_KeyPress([index As Integer,]keyascii As Integer)KeyPress 事件语法包含下列部分:部分 描述 
    object 一个对象表达式,其值是“应用于”列表中的一个对象。 
    index 一个整数,它用来唯一标识一个在控件数组中的控件。 
    keyascii 是返回一个标准数字 ANSI 键代码的整数。Keyascii 通过引用传递,对它进行改变可给对象发送一个不同的字符。将 keyascii 改变为 0 时可取消击键,这样一来对象便接收不到字符。 
    说明具有焦点的对象接收该事件。一个窗体仅在它没有可视和有效的控件或 KeyPreview 属性被设置为 True 时才能接收该事件。一个 KeyPress 事件可以引用任何可打印的键盘字符,一个来自标准字母表的字符或少数几个特殊字符之一的字符与 CTRL 键的组合,以及 ENTER 或 BACKSPACE 键。KeyPress 事件过程在截取 TextBox 或 ComboBox 控件所输入的击键时是非常有用的。它可立即测试击键的有效性或在字符输入时对其进行格式处理。改变 keyascii 参数的值会改变所显示的字符。可使用下列表达式将 keyascii 参数转变为一个字符:Chr(KeyAscii)然后执行字符串操作,并将该字符反译成一个控件可通过该表达式解释的 ANSI 数字:KeyAscii = Asc(char)应当使用 KeyDown 和 KeyUP 事件过程来处理任何不被 KeyPress 识别的击键,诸如:功能键、编辑键、定位键以及任何这些键和键盘换档键的组合等。与 KeyDown 和 KeyUp 事件不同的是,KeyPress 不显示键盘的物理状态,而只是传递一个字符。KeyPress 将每个字符的大、小写形式作为不同的键代码解释,即作为两种不同的字符。而 KeyDown 和 KeyUp 用两种参数解释每个字符的大写形式和小写形式:keycode — 显示物理的键(将 A 和 a 作为同一个键返回)和 shift —指示 shift + key 键的状态而且返回 A 或 a 其中之一。如果 KeyPreview 属性被设置为 True,窗体将先于该窗体上的控件接收此事件。可用 KeyPreview 属性来创建全局键盘处理例程。注意...CTRL+@ 的键盘组合的 ANSI 编号是 0。因为 Visual Basic 将一个零值的 keyascii 识别为一个长度为零的字符串 (""),在应用程序中应避免使用 CTRL+@ 的组合。
      

  3.   

    dim c as string
    if c>asc("0") and c<asc("9") then  msgbox "c是数字"
    if c>asc("A") and c<asc("z") then  msgbox "c是字母"
      

  4.   

    IsNumeric 函数
          返回 Boolean 值,指出表达式的运算结果是否为数。语法IsNumeric(expression)必要的 expression 参数是一个 Variant,包含数值表达式或字符串表达式。说明如果整个 expression 的运算结果为数字,则 IsNumeric 返回 True;否则返回 False。如果 expression 是日期表达式,则 IsNumeric 返回 False。
      

  5.   

    Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode > 47 And KeyCode < 58 Then
    MsgBox "输入的是数字"
    End If
    If KeyCode > 64 And KeyCode < 91 Then
    MsgBox "输入的是字母"
    End IfEnd Sub
      

  6.   

    ' 限制文本框中输入的内容
    ' 这个例子是限制只能输入数字,仔细看看注释,可以限制任何字符。  :DOption Explicit' 限制文本框中输入的内容
    ' 例: 在 Text 的 KeyPress 事件中调用 KeyAscii = MaskText(KeyAscii, "0123456789", True) 则文本框只允许输入数字
    Function MaskText(ByVal KeyIn As Integer, ByVal ValidateString As String, ByVal Editable As Boolean) As Integer
        Dim ValidateList As String, KeyOut As Integer
        If Editable = True Then
            ValidateList = UCase(ValidateString) & Chr(8)
        Else
            ValidateList = UCase(ValidateString)
        End If
        If InStr(1, ValidateList, UCase(Chr(KeyIn)), 1) > 0 Then
            KeyOut = KeyIn
        Else
            KeyOut = 0
        End If
        MaskText = KeyOut
    End Function
    Private Sub Text1_KeyPress(KeyAscii As Integer)
        KeyAscii = MaskText(KeyAscii, "0123456789", True)
    End Sub
      

  7.   

    我想从文本框LostFocus()里判断,请问如何写?
      

  8.   

    Private Sub Text1_LostFocus()
      dim i as Integer
      i=Len(Text1.Text)
      dim j as Integer
      for j=1 to i
        if instr("1234567890",mid(Text1.Text,j,1))>0 then
             msgbox "有数字"
        else
           if Lcase(mid(Text1.Text,j,1))>="a" and Lcase(mid(Text1.Text,j,1))<="z" then
               msgbox "有字母"
           else
               msgbox "有除字母和数字之外的字符串"
           end f
        end if
      next
    End Sub
      

  9.   

    楼上的方法执行效率不高,
    Private Sub Text1_LostFocus()
        If KeyCode > 47 And KeyCode < 58 Then
               MsgBox "输入的是数字"
        End If
        If KeyCode > 64 And KeyCode < 91 Then
               MsgBox "输入的是字母"
        End If
    end sub
      

  10.   

    补充一下,
    定义一个全局变量KeyCodes,在Text1_KeyPress中加一条语句将
    Private sub Text1_KeyPress(keyascii As Integer)
         KeyCodes=KeyAscii
    end subPrivate Sub Text1_LostFocus()
        If KeyCodes > 47 And KeyCodes < 58 Then
               MsgBox "输入的是数字"
        End If
        If (KeyCodes > 64 And KeyCodes < 91)Or (KeyCodes>96 and KeyCodes<123) Then
               MsgBox "输入的是字母"
        End If
    end sub
      

  11.   

    用IsNumeric 函数返回 Boolean 值,指出表达式的运算结果是否为数字。定义一个变量aaa
    语法 IsNumeric(aaa)
    如果整个 aaa 的运算结果为数字,则 IsNumeric 返回 True;否则返回 False。
      

  12.   

    以下代码供参考:
    让TEXT1文件框里仅可以输入有效的数值型数据,并且可以删除等等。回国后到下一个焦点位置。
    希望对你有用!
    Private Sub Text1_KeyPress( KeyAscii As Integer)  If KeyAscii > 57 Or (KeyAscii < 48 And _
          KeyAscii <> 13 And KeyAscii <> 8 And _
          KeyAscii <> 9 And KeyAscii <> 27 And _
          KeyAscii <> 46 And KeyAscii <> 3 And _
          KeyAscii <> 22 And KeyAscii <> 24) Then
          KeyAscii = 0
      End If
      If KeyAscii = 13 Then SendKeys "{Tab}"
    End Sub