Private Sub Text1_KeyPress(KeyAscii As Integer)
If InStr(1, "1234567890.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case Asc("0") To Asc("9"), Asc("."), vbKeyBack, vbKeyDelete
Case Else
KeyAscii = 0
End Select
End Sub
Option Explicit
Private Const LOCALE_SDECIMAL As Long = &HE&
Private Const LOCALE_USER_DEFAULT As Long = &H400&
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Private Function GetSeparator$()
Dim Buf$, Ret&
Buf = String$(256, 0)
GetSeparator = Left$(Buf, GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, Buf, Len(Buf)))
End Sub
Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case Asc("0") To Asc("9"), Asc(GetSeparator), vbKeyBack, vbKeyDelete
Case Else
KeyAscii = 0
End Select
End Sub
Как определить, что в TextBox введены только цифры?
if IsNumeric(Text1.text) then msgbox "Цифры"
Чудик писал(а):Как определить, что в TextBox введены только цифры?
Option Explicit
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const ES_NUMBER As Long = &H2000&
Private Const GWL_STYLE As Long = -16
Private Sub Form_Load()
Text1.Text = vbNullString
SetWindowLong Text1.hwnd, GWL_STYLE, GetWindowLong(Text1.hwnd, GWL_STYLE) Or ES_NUMBER
End Sub
Private Sub Text1_Change()
Static OldText As String
If IsNumeric(Text1.Text) Then OldText = Text1.Text Else Text1.Text = OldText
End Sub
Amed писал(а):Кстати, надо ещё учесть, что в разных странах разные разделители целой и дробной частей числа. Надо вытаскивать данные о текущем разделителе. Где найти, как вытащить, - не знаю . Спроси у Яндекса.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 163