textbox需要控制数据录入,规则是:录入数据为3位或者4位数字,要求无论录入3为还是4位,第二位均为“.”,例如0.0,0.12,3.0等等。(已知asc码数字区间为48到57,“.”的asc码为46)代码如下:Public Sub TextboxVisit(T As TextBox)
Dim i As Integer
ID=T.text
If Len(T.text) < 2 or Len(T.text) > 4 Then
T.Text = ""
MsgBox ("错误1,请重新输入!")
Exit Sub
End If
For i = 1 To 4
If Asc(Mid(ID, i, 1)) < 46 or Asc(Mid(ID, i, 1)) = 47 or Asc(Mid(ID, i, 1)) > 57 Then
T.Text = ""
MsgBox ("错误2,请重新输入!")
Exit Sub
End If
Next i
If (Asc(Mid(VisitID, 2, 1)) <> 46) Then
T.Text = ""
MsgBox ("错误3,请重新输入!")
Exit Sub
End If
End Sub
    请教各位啊,谢谢!

解决方案 »

  1.   

    Dim i As Integer
    id = T.Text
    If Len(T.Text) < 2 Or Len(T.Text) > 4 Then
    T.Text = ""
    MsgBox ("错误1,请重新输入!")
    Exit Sub
    End If
    For i = 1 To Len(T.Text)
    If Asc(Mid(id, i, 1)) < 46 Or Asc(Mid(id, i, 1)) = 47 Or Asc(Mid(id, i, 1)) > 57 Then
    T.Text = ""
    MsgBox ("错误2,请重新输入!")
    Exit Sub
    End If
    Next i
    If (Asc(Mid(id, 2, 1)) <> 46) Then
    T.Text = ""
    MsgBox ("错误3,请重新输入!")
    Exit Sub
    End If
    End Sub
      

  2.   

    将这段代码放在 文本框的失去焦点 事件中Private Sub T_LostFocus()
        Dim i As Integer
        ID = T.Text
        If Len(T.Text) < 2 Or Len(T.Text) > 4 Then
            T.Text = ""
            MsgBox ("错误1,请重新输入!")
            Exit Sub
        End If
        For i = 1 To Len(T.Text)
            If Asc(Mid(ID, i, 1)) < 46 Or Asc(Mid(ID, i, 1)) = 47 Or Asc(Mid(ID, i, 1)) > 57 Then
                T.Text = ""
                MsgBox ("错误2,请重新输入!")
                Exit Sub
            End If
        Next i
        If (Asc(Mid(ID, 2, 1)) <> 46) Then
            T.Text = ""
            MsgBox ("错误3,请重新输入!")
        Exit Sub
        End If
        End Sub
      

  3.   

    “If (Asc(Mid(VisitID, 2, 1)) <> 46) Then”中的VisitID是打错了还是就有这个变量?
    你直接单步运行,调试一下,看看 T 是否传到TextboxVisit中,“错误1,请直接输入”显然是没有参数传递。