帮忙分析下这段VB代码

来源:百度知道 编辑:UC知道 时间:2024/06/17 02:40:54
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 46 Then
If Len(Text1.Text) = 0 Then
KeyAscii = 0
Exit Sub
End If

For i = 1 To Len(Text1.Text)
If Mid(Text1.Text, i, 1) = "." Then
KeyAscii = 0
Exit Sub
End If
Next i
End If

If KeyAscii <> vbKeyBack And KeyAscii <> 46 And KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
End If
End Sub

详细分析下

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 46 Then '如果中按下去的 小数点那个键
If Len(Text1.Text) = 0 Then '如果text1 是空的,就是没有数字,那么不能输入小数点,也就是小数点不能在第一位
KeyAscii = 0 ' 使输入无效,不会再text1中显示
Exit Sub
End If

For i = 1 To Len(Text1.Text) '接着最上面的 if 语句 :如果输入的是小数点的话
If Mid(Text1.Text, i, 1) = "." Then '判断 text1中的每个字符,如果已经存在小数点的话
KeyAscii = 0 '输入无效, 也就是 不能再输入小数点了
Exit Sub '退出过程
End If
Next i
End If

If KeyAscii <> vbKeyBack And KeyAscii <> 46 And KeyAscii < 48 Or KeyAscii > 57 Then
'如果不是 0—9 包括小数点的话,输入无效, 也就是 只能输入 数字包括小数点
KeyAscii = 0
End If
End Sub

46是"."的ASCII码,48和57分别是"0"和"9"的ASCII码,所以这段代码的功能就是:在text1输入的时候,第一个字符不能是".",输入的只能是0到9的数字,且只能输入一个"."
就是说只能输入类似***.***的形式,即只能是实数