Private Sub Text1_Change() If Not IsNumeric(Trim$(Text1.Text)) Then Text1.Text = "" Text1.SetFocus ' MsgBox "请输入数字!", , "警告" Exit Sub End If End Sub
If Not IsNumeric(Trim$(Text1.Text)) Then MsgBox "请输入数字!", , "警告" End If
一般通过KeyPress事件判断键盘按键来限制即可。
Private Declare Sub RtlMoveMemory Lib "kernel32" (Destination As Any, Source As Any, ByVal Length As Long)'用这个函数判断指定的 Char 是否为数字类别。 Public Function IsDigit(ByVal Char As String) As Boolean Dim vCharCode As Long RtlMoveMemory vCharCode, AscW(Char), 2 Select Case vCharCode Case 48 To 57, 1632 To 1641, 1776 To 1785, 2406 To 2415, 2534 To 2543, 2662 To 2671, 2790 To 2799, 2918 To 2927, 3046 To 3055, 3174 To 3183, 3302 To 3311, 3430 To 3439, 3664 To 3673, 3792 To 3801, 3872 To 3881, 4160 To 4169, 6112 To 6121, 6160 To 6169, 6470 To 6479, 6608 To 6617, 65296 To 65305 IsDigit = True Case Else IsDigit = False End Select End Function
只能输入"1234567890."Private Sub Text1_KeyPress(KeyAscii As Integer) If (Not (KeyAscii > 45 And KeyAscii < 58)) And KeyAscii <> 8 And KeyAscii <> 47 Then KeyAscii = 0 End Sub
if (keyascii<48 or keyascii>57) and keyascii<>8 then keyascii=0
Private Declare Sub RtlMoveMemory Lib "kernel32" (Destination As Any, Source As Any, ByVal Length As Long)'用这个函数判断指定的 Char 是否为数字类别。 Public Function IsDigit(ByVal Char As String) As Boolean Dim vCharCode As Long RtlMoveMemory vCharCode, AscW(Char), 2 Select Case vCharCode Case 48 To 57, 1632 To 1641, 1776 To 1785, 2406 To 2415, 2534 To 2543, 2662 To 2671, 2790 To 2799, 2918 To 2927, 3046 To 3055, 3174 To 3183, 3302 To 3311, 3430 To 3439, 3664 To 3673, 3792 To 3801, 3872 To 3881, 4160 To 4169, 6112 To 6121, 6160 To 6169, 6470 To 6479, 6608 To 6617, 65296 To 65305 IsDigit = True Case Else IsDigit = False End Select End Function不太明白,作者解释下....
Private Sub Text1_KeyPress(KeyAscii As Integer) On Error Resume Next Dim i As Integer Dim j As Integer If KeyAscii > 57 Or KeyAscii < 48 And KeyAscii <> 46 And KeyAscii <> 8 And KeyAscii <> 13 Then Text1.Locked = True ElseIf KeyAscii = 46 Then i = InStr(Text1.Text, ".") j = Len(Trim(Text1.Text)) If j = 0 Then Text1.Locked = True ElseIf i = 0 Then Text1.Locked = False Else Text1.Locked = True End If Else Text1.Locked = False End If End Sub 可以使用方向键及DEL、BACKSPACE键,并且只能输入一个小数点
If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
KeyAscii = 0
End If
End Sub
If Not IsNumeric(Trim$(Text1.Text)) Then
Text1.Text = ""
Text1.SetFocus
' MsgBox "请输入数字!", , "警告"
Exit Sub
End If
End Sub
MsgBox "请输入数字!", , "警告"
End If
Public Function IsDigit(ByVal Char As String) As Boolean
Dim vCharCode As Long
RtlMoveMemory vCharCode, AscW(Char), 2
Select Case vCharCode
Case 48 To 57, 1632 To 1641, 1776 To 1785, 2406 To 2415, 2534 To 2543, 2662 To 2671, 2790 To 2799, 2918 To 2927, 3046 To 3055, 3174 To 3183, 3302 To 3311, 3430 To 3439, 3664 To 3673, 3792 To 3801, 3872 To 3881, 4160 To 4169, 6112 To 6121, 6160 To 6169, 6470 To 6479, 6608 To 6617, 65296 To 65305
IsDigit = True
Case Else
IsDigit = False
End Select
End Function
If (Not (KeyAscii > 45 And KeyAscii < 58)) And KeyAscii <> 8 And KeyAscii <> 47 Then KeyAscii = 0
End Sub
if (keyascii<48 or keyascii>57) and keyascii<>8 then keyascii=0
Public Function IsDigit(ByVal Char As String) As Boolean
Dim vCharCode As Long
RtlMoveMemory vCharCode, AscW(Char), 2
Select Case vCharCode
Case 48 To 57, 1632 To 1641, 1776 To 1785, 2406 To 2415, 2534 To 2543, 2662 To 2671, 2790 To 2799, 2918 To 2927, 3046 To 3055, 3174 To 3183, 3302 To 3311, 3430 To 3439, 3664 To 3673, 3792 To 3801, 3872 To 3881, 4160 To 4169, 6112 To 6121, 6160 To 6169, 6470 To 6479, 6608 To 6617, 65296 To 65305
IsDigit = True
Case Else
IsDigit = False
End Select
End Function不太明白,作者解释下....
On Error Resume Next
Dim i As Integer
Dim j As Integer
If KeyAscii > 57 Or KeyAscii < 48 And KeyAscii <> 46 And KeyAscii <> 8 And KeyAscii <> 13 Then
Text1.Locked = True
ElseIf KeyAscii = 46 Then
i = InStr(Text1.Text, ".")
j = Len(Trim(Text1.Text))
If j = 0 Then
Text1.Locked = True
ElseIf i = 0 Then
Text1.Locked = False
Else
Text1.Locked = True
End If
Else
Text1.Locked = False
End If
End Sub
可以使用方向键及DEL、BACKSPACE键,并且只能输入一个小数点