Private Sub Text1_KeyPress(KeyAscii As Integer) If (KeyAscii >= 32 And KeyAscii <= 45) Or KeyAscii = 47 Or (KeyAscii >= 58 And KeyAscii <= 126) Then KeyAscii = 0 Else If InStr(1, Text1.Text, ".", vbTextCompare) > 0 And KeyAscii = 46 Then KeyAscii = 0 End If End If End Sub
最简单的方法: Private Sub txtLimit_KeyPress(KeyAscii As Integer) Dim Numbers As String
Numbers = "1234567890" + Chr(8) + Chr(46) If InStr(Numbers, Chr(KeyAscii)) = 0 Then KeyAscii = 0 End Sub
Public Function sffunLimitNumber(ByVal IntVal As Integer) As Integer ''''-------------------1------------------- ''''目 的:只允许在文本框内输入数字、退格、删除及回车键 ''''输 入:ByVal IntVal As Integer,任意的键值 ''''被传递值:无 ''''返 回 值:过滤后的键值 ''''输 出:无 ''''注 解: ''''用 法:在文本框的KeyPress事件中输入KeyAscii = sffunLimitNumber(KeyAscii)即可 ''''修 订 版: ''''-------------------1-------------------
If (IntVal <> vbKeyDelete) _ And (IntVal <> vbKeyBack) _ And (IntVal <> 13) _ And (IntVal < 48 Or IntVal > 57) Then IntVal = 0 End If sffunLimitNumber = IntVal
KeyAscii = 0
Else
If InStr(1, Text1.Text, ".", vbTextCompare) > 0 And KeyAscii = 46 Then
KeyAscii = 0
End If
End If
End Sub
Private Sub txtLimit_KeyPress(KeyAscii As Integer)
Dim Numbers As String
Numbers = "1234567890" + Chr(8) + Chr(46)
If InStr(Numbers, Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
''''-------------------1-------------------
''''目 的:只允许在文本框内输入数字、退格、删除及回车键
''''输 入:ByVal IntVal As Integer,任意的键值
''''被传递值:无
''''返 回 值:过滤后的键值
''''输 出:无
''''注 解:
''''用 法:在文本框的KeyPress事件中输入KeyAscii = sffunLimitNumber(KeyAscii)即可
''''修 订 版:
''''-------------------1-------------------
If (IntVal <> vbKeyDelete) _
And (IntVal <> vbKeyBack) _
And (IntVal <> 13) _
And (IntVal < 48 Or IntVal > 57) Then
IntVal = 0
End If
sffunLimitNumber = IntVal
End Function