ci sono le api di windows che ti permettono di inserire ad esempio in una text solo valori numeri.
l'unico intoppo è che non ti permette di inserire la virgola per i decimali
codice:
Declare Function GetWindowLongA Lib "user32"
(ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function SetWindowLongA Lib "user32"
(ByVal hwnd As Long, ByVal nIndex As Long,
ByVal dwNewLong As Long) As Long
Global Const GWL_STYLE = (-16)
Global Const ES_NUMBER = &H2000&
Sub CampoSoloNumeri(HwndCampoTesto As Long)
Dim Estyle As Long
Dim X As Long
Estyle = GetWindowLongA(HwndCampoTesto, GWL_STYLE)
Estyle = Estyle Or ES_NUMBER
X = SetWindowLongA(HwndCampoTesto, GWL_STYLE, Estyle)
End Sub
se invece devi inserire anche numeri decimali puoi fare così
codice:
Public Function CampiDecimali(myAsciiCode As Integer) As Integer
If myAsciiCode >= 48 And myAsciiCode <= 57 _
Or myAsciiCode = 46 Or myAsciiCode = 8 Then
'Carattere valido
CampiDecimali = myAsciiCode
ElseIf myAsciiCode = 44 Then
CampiDecimali = 46
'Carattere non valido
Else
CampiDecimali = 0
End If
End Function
e richiamarla nella text interessata in questo modo
codice:
Private Sub txtErrata_KeyPress(KeyAscii As Integer)
KeyAscii = CampiDecimali(KeyAscii)
End Sub