Visual Basic - Para Pedro Luis

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de Willy

Para Pedro Luis

Publicado por Willy (27 intervenciones) el 31/05/2006 15:29:11
Hola Pedro Luis
Mi pregunta fue:
Como hago para que un TextBox solo acepte número

Tu respuesta fue:
En el KeyPres pon algo asi
If (KeyAscii > 36 And KeyAscii < 48) Or (KeyAscii > 57) Then
Beep
KeyAscii = 0
End If

Gracias por tu respuesta, me fue de gran ayuda, pero ahora choco con otro problema.
No puedo introducir un número negativo, tampoco acepta punto o coma decimal, que puedo hacer. Si un número empieza con cero debe tener inmediatamente una coma.
Intenté localizar con KeyAscii la coma, pero me permitir colocar muchas comas, eso está mal.
Lo que necesito es: Digitar números dentro un rango que pueda definir previamente.
Espero tu respuesta.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Para Pedro Luis

Publicado por Juan (93 intervenciones) el 31/05/2006 15:34:34
Para el caso de las comas podrias mantener un logico estatico inicilizado en falso. Entonces harias algo asi

If (KeyAscii > 36 And KeyAscii < 48) Or (KeyAscii > 57) Or (es coma y no logico) Then
si es coma entonces
logico = verdad
fsi
Beep
KeyAscii = 0
End If

con eso permites que tenga solo una coma. Cuando el formulario se descarge le asignas al logico falso nuevamente. Puedes hacer lo mismo con el .

Con el menos podrias hacer lo mismo, siempre y cuando el tamaño de la cadena sea 1, es decir, es el unico caracter que tienes en la entrada.

Y finalmente, si el askii de KeyAscii es 48 y el el tamaño del texto en el Text es 1, le añades la coma o el punto automaticamente.

Espero haberme explicado......
Prueba y dices que tal
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Para Pedro Luis

Publicado por fabian (3 intervenciones) el 31/05/2006 16:04:50
no seria mas facil usar una prueba logica :
if isnumeric (text1)= false then
msgbox"error"
else
.....
end if
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Para Pedro Luis

Publicado por Juan (93 intervenciones) el 31/05/2006 16:16:20
No le comente eso por el uso de puntos y comas, me suena que quiere separar los miles con puntos y la parte decimal con una coma. En ese caso el isnumeric no creo que le sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Willy

RE:Para Pedro Luis

Publicado por Willy (27 intervenciones) el 31/05/2006 21:59:21
Gracias por sus respuestas.
Lo que deseo es un text1, que solo acepte digitos (números) o sea que cuando digite r45 no acepte la r, solo 45.
Si utilizo
if isnumeric (text1)= false then
ya se ha aceptado el r45 y se verifica si es un número, eso no quiero
El número que digito puede empezar con cero o puede ser con decimales.
En dos variables anteriores por Ej, a, b, serán alamacenados dos numeros por Ej. a=-10 y b=15 este debe ser el rango en e cual me permita leer un número, o sea el text1 solo debe aceptar -14, -10, .... 0 .... 8, 7.8, 14.9, y no debe aceptar otros números -20, 18, 24.5 , etc.
Espero haberme hecho entender.
Gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Para Pedro Luis

Publicado por Juan (93 intervenciones) el 06/06/2006 22:18:18
Bueno lo que haces es programar el evento change del text, y utilizar el keyAskii (o como se escriba), como te dije antes. Adicionalmente sabes que lo que estas convirtiendo es un numero (porque vas dejando numeros en el text), puedes agregar la validacion de que sea mayor que el numero a y menor que el numero b con el Value para hacer el cast.

Importante debes tener en cuenta que en la programacion del evento puedes modificar el text, y eso ocasionaria infinitas llamadas, para eso debes usar una variable global que la setees es falso cuando entres al evento y a verdad cuando salgas, y solo hagas las validaciones cuando dicha variable este en verdad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar