Como hago para Verificar el tipo de datos en un Textbox
La Prgunta es la del titulo, pero ahora bien la cosa es:
tengo un textbox cuyo datafield es un campo numerico, no hay una forma de verificar que lo escrito sean numeros y no letras, para que el programa no me de un error?
tengo un textbox cuyo datafield es un campo numerico, no hay una forma de verificar que lo escrito sean numeros y no letras, para que el programa no me de un error?
Puedes usar la función IsNumeric(cadena) que devuelve
true o false dependiendo de si la cadena es un
número o no.
Por otro lado también podrías filtrar la entrada de los
caracteres de esta forma:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If ((KeyAscii > Asc("9")) Or (KeyAscii < Asc("0"))) And (KeyAscii <> 8) Then
KeyAscii = 0
End If
End Sub
Esto sólo permite escribir con caracteres numéricos
y la tecla de borrar. Auque tiene un problema, y es que
si se escribe mediante un "copiar y pegar" se puede escribir
cualquier caracter.
true o false dependiendo de si la cadena es un
número o no.
Por otro lado también podrías filtrar la entrada de los
caracteres de esta forma:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If ((KeyAscii > Asc("9")) Or (KeyAscii < Asc("0"))) And (KeyAscii <> 8) Then
KeyAscii = 0
End If
End Sub
Esto sólo permite escribir con caracteres numéricos
y la tecla de borrar. Auque tiene un problema, y es que
si se escribe mediante un "copiar y pegar" se puede escribir
cualquier caracter.
Y si se usa copiar/pegar, como dice el amigo Juan, entonces te vas al evento LOSTFOCUS, y en ese momento compruebas que el valor es numérico (ISNUMERIC)
o directamente pones:
text1=val(text1) en el lost focus, pero no es una solución muy limpia, yo prefiero enviar un msgbox que diga: "cuidado, no es un número" y que te vuelva a poner el foco en el textbox, y así no te permitirá salir hasta que sea un número.
Saludos
o directamente pones:
text1=val(text1) en el lost focus, pero no es una solución muy limpia, yo prefiero enviar un msgbox que diga: "cuidado, no es un número" y que te vuelva a poner el foco en el textbox, y así no te permitirá salir hasta que sea un número.
Saludos
Acá tienes una solución sencilla y fácil:
Private Sub Text1_Validate(Cancel As Boolean)
If Text1.Text <> 0 Then
While Not IsNumeric(Text1.Text)
Cancel = True
MsgBox ("Ingrese valor numérico")
Text1.Text = 0
Wend
End If
End Sub
Con esta instrucción no te dejará ingresar un valor que o sea numérico
lo de colocar un 0 en la caja cuando valida es para que no se quede pegado en un loop, porque al haber un valor vacío, te va a preguntar siempre por un valor numérico y se queda pegado sin permitirte introdcir datos.
Private Sub Text1_Validate(Cancel As Boolean)
If Text1.Text <> 0 Then
While Not IsNumeric(Text1.Text)
Cancel = True
MsgBox ("Ingrese valor numérico")
Text1.Text = 0
Wend
End If
End Sub
Con esta instrucción no te dejará ingresar un valor que o sea numérico
lo de colocar un 0 en la caja cuando valida es para que no se quede pegado en un loop, porque al haber un valor vacío, te va a preguntar siempre por un valor numérico y se queda pegado sin permitirte introdcir datos.
