Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKey0 To vbKey9, vbKeyDecimal
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case Chr$(KeyAscii)
Case "0" To "9", ".", ","
' nothing to do
Case Else
KeyAscii = 0
End Select
End Sub
GSerg писал(а):
- Код: Выделить всё
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKey0 To vbKey9, vbKeyDecimal
Case Else
KeyAscii = 0
End Select
End Sub
Ennor писал(а):
- Код: Выделить всё
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case Chr$(KeyAscii)
Case "0" To "9", ".", ","
' nothing to do
Case Else
KeyAscii = 0
End Select
End Sub
Видимо, все-таки вот так...
Private Sub Text1_KeyPress(KeyAscii As Integer)
If (InStr(1, "1234567890," & Chr(8), Chr(KeyAscii))) = 0 Then KeyAscii = 0
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Const Accept = "1234567890,"
If Len(Replace(Accept, Chr(KeyAscii), "")) = Len(Accept) Then KeyAscii = 0
End Sub
tyomitch писал(а):...
Не спорю, что так читается лучше, но гораздо эффективнее было бы делать Case по самому KeyAscii, чтобы избежать 4:!: строковых сравнений для каждой нажатой кнопки.
Сейчас этот форум просматривают: PetalBot, Yandex-бот и гости: 11