
He aquí una manera de validar los datos de los TextBox y otros controles que tengan el evento KeyPress. Es simple pero funcional.
Primero añadimos esta función :
Function ValiText(KeyIn As Integer, ValidateString As String, Editable As Boolean) As Integer
Dim ValidateList As String
Dim KeyOut As Integer
'
If Editable = True Then
ValidateList = UCase(ValidateString) & Chr(8)
Else
ValidateList = UCase(ValidateString)
End If
'
If InStr(1, ValidateList, UCase(Chr(KeyIn)), 1) > 0 Then
KeyOut = KeyIn
Else
KeyOut = 0
Beep
End If
'
ValiText = KeyOut
'
End Function
Luego, por cada control cuya entrada queramos validar, sólo pon algo como esto en el evento JeyPress del control :
KeyAscii=ValiText(Keyascii, "0123456789/-",True)
Haciendo esto filtramos teclas indeseadas y aceptamos sólo las teclas definidas en el segundo parámetro. En este caso, el parámetro ("0123456789/-") define los caracteres que son válidos para una fecha.
El tercer parámetro de la función controla cuándo la tecla [Backspace] pueda ser usada.
Hay que tener en cuenta que la implementación de esta función no distingue mayúsculas de minúsculas.
From--Juan Lozano [jlozano@truevision.net]

Otra versión de la rutina anterior podría ser :
Function ValiText (KeyIn As Integer, ValidateString As String, Mayus As Integer) As Integer
Dim KeyOut As Integer
If KeyIn >= 32 Then 'si es un carácter
If InStr(1, ValidateString, UCase$(Chr(KeyIn)), 1) > 0 Then
If Mayus Then
KeyOut = Asc(UCase$(Chr(KeyIn)))
Else
KeyOut = KeyIn
End If
Else
KeyOut = 0
Beep
End If
End If
ValiText = KeyOut
End Function
En esta versión siempre admitimos el uso de las teclas que no corresponden a caracteres y con el último parámetro (Mayus) indicamos si queremos que las letras válidas sean convertidas siempre a mayúsculas.
José Rubí, jrubi@arrakis.es http://www.arrakis.es/~jrubi

