Arielo
13/02/2008, 09:20
Pequeña rutinilla para Visual Basic, con la que se puede evitar que en una caja de texto normal, se pueda ingresar otra cosa que no sea un número, ya sea entero o decimal.
Lo que hace, es verificar cada tecla que se pulsa mientras la caja de texto sea el control activo (o sea que posea el "caption")
Si la tecla no es un número, el punto decimal, o el retroceso, rechaza la tecla.
He numerado las líneas para dar una breve explicación del funcionamiento de la rutina, que no es para nada complicada...
Bien, vamos allá...
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii = 0
SendKeys "{tab}”
ElseIf KeyAscii <> 8 Then
If Not IsNumeric(Chr(KeyAscii)) Then
Beep
KeyAscii = 0
End If
End If
End Sub
Línea 2: Si la tecla pulsada es "Enter" (KeyAscii=13) ...
Línea 3: Hacer que el valor de la tecla pulsada sea 0 (evita el Beep)
Línea 4: Enviar el código de tabulación. Esto hace que al pulsar Enter, el sistema se comporte como si en realidad, se hubiera pulsado el tabulador.
Línea 5: En cambio, si se pulsó "Retroceso" (KeyAscii=8) ...
Línea 6: Verificar si el código de la tecla que se pulsó, corresponde a una tecla numérica (IsNumeric = True)
Línea 7: Realizar un beep, para advertir del error...
Línea 8: Ignorar la tecla pulsada
Espero les sea de utilidad...
.
Lo que hace, es verificar cada tecla que se pulsa mientras la caja de texto sea el control activo (o sea que posea el "caption")
Si la tecla no es un número, el punto decimal, o el retroceso, rechaza la tecla.
He numerado las líneas para dar una breve explicación del funcionamiento de la rutina, que no es para nada complicada...
Bien, vamos allá...
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii = 0
SendKeys "{tab}”
ElseIf KeyAscii <> 8 Then
If Not IsNumeric(Chr(KeyAscii)) Then
Beep
KeyAscii = 0
End If
End If
End Sub
Línea 2: Si la tecla pulsada es "Enter" (KeyAscii=13) ...
Línea 3: Hacer que el valor de la tecla pulsada sea 0 (evita el Beep)
Línea 4: Enviar el código de tabulación. Esto hace que al pulsar Enter, el sistema se comporte como si en realidad, se hubiera pulsado el tabulador.
Línea 5: En cambio, si se pulsó "Retroceso" (KeyAscii=8) ...
Línea 6: Verificar si el código de la tecla que se pulsó, corresponde a una tecla numérica (IsNumeric = True)
Línea 7: Realizar un beep, para advertir del error...
Línea 8: Ignorar la tecla pulsada
Espero les sea de utilidad...
.