限制长度用MaxLength属性:
Private Sub Form_Load()
Text1.MaxLength = 20
End Sub
在其他地方一点鼠标判断用LostFocus事件,即失去焦点时触发:
Private Sub Text1_LostFocus()
For i = 1 To Len(Text1)
If Not IsNumeric(Mid(Text1, i, 1)) Then
MsgBox "不能输入除数字外的其他字符!", 48
Text1.SetFocus
Text1.SelStart = Len(Text1)
Exit Sub
End If
Next
End Sub
Text1_Change是在Text1变化时触发,而不是“在其他地方一点鼠”时发生,另外:
1、Text1的值一变化就MsgBox是很烦人的;
2、IsNumeric(Text1.Text)不能完全符合设置,比如你输入12,然后按左箭头将光标移动1和2中间再输入字母E或D,是不会提示的,因为VB中默认1E2之类是数值的(科学计数法,1E2=100)。
另一个方法,用KeyPress事件,限制不输入除数字外的其他字符:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If InStr("0123456789" & Chr(8) & Chr(9), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
如果判断是否数值(而不仅仅判断是否为数字)可用Text1_LostFocus和Text1_KeyPress的组合。
只能输入汉字:
Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii > 0 Then KeyAscii = 0
End Sub
在其他地方一点鼠标判断:
Private Sub Text2_LostFocus()
For i = 1 To Len(Text2)
If Asc(Mid(Text2, i, 1)) > 0 Then
MsgBox "只能输入汉字及全角字符符!", 48
Text2.SetFocus
Text2.SelStart = Len(Text2)
Exit Sub
End If
Next
End Sub
is number 函数判断
写在text—change事件里