Como hago para Verificar el tipo de datos en un Textbox

mcdowell
16 de Noviembre del 2003
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?

Juan
16 de Noviembre del 2003
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.

Baltasar
16 de Noviembre del 2003
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

mcdowell
16 de Noviembre del 2003
Muchas Gracias!

bartolom
16 de Noviembre del 2003
ghggf

bartolom
16 de Noviembre del 2003
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.