• Domingo 22 de Diciembre de 2024, 22:12

Autor Tema:  Texbox Que Solo Admita Números  (Leído 10260 veces)

cj_sw

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Texbox Que Solo Admita Números
« en: Lunes 25 de Septiembre de 2006, 20:39 »
0
Hola, estoy dando mis primeros pasos en VB y la duda que tengo es

En un TexBox ingreso datos para realizar una división, lo pude hacer pero si durante la ejecución ingreso letras me las toma y luego da error

Como hago para que solo admita numeros ?

Para evitar la división por 0 puse este código,

ElseIf TxtTalla = 0 Then
MsgBox "No se puede dividir por 0", vbCritical, "Recuerda que"
TxtTalla.SetFocus
Exit Sub

Si hay otra forma les agradecería el dato


Gracias

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Texbox Que Solo Admita Números
« Respuesta #1 en: Lunes 25 de Septiembre de 2006, 21:08 »
0
Hola novato bienvenido al foro, como esta es una pregunta muy preguntada (jejeje valga la redundancia) si quieres puedes usar el buscador del foro, que queda en la parte inferior.

Si quieres hacer que un TextBox acepte solo números puedes hacer lo siguiente:

Código: Text
  1. If (KeyAscii < 48 Or KeyAscii > 57) Then
  2. KeyAscii = 0
  3. End Sub
  4.  
Ojala te sirva.
Chao
El pasado son solo recuerdos, el futuro son solo sueños

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: Texbox Que Solo Admita Números
« Respuesta #2 en: Martes 26 de Septiembre de 2006, 00:27 »
0
Citar
Como hago para que solo admita numeros ?

 :) bueno es basicamente como dijo RadicalEd solo que esa rutina que ha posteado tiene un problema y es que no acepta la tecla BACKSPACE es decir si te equivocas y quieres borrar el dato no puedes hacerlo aqui posteo la forma en que eso se corrige,  :comp: cj_sw tienes que poner esta subrutina para cada textbox al que le quieras restringir la entrada de otros caracteres que no sean numeros

Código: Text
  1. Private Sub text1_keypress(keyascii As Integer)
  2. If keyascii = 8 Then '8 es la tecla backspace
  3.  GoTo salir
  4. End If
  5.  If (keyascii < 48 Or keyascii > 57) Then
  6.    keyascii = 0
  7.  End If
  8. salir:
  9. End Sub
  10.  

ojo si estas usando numeros con punto decimal tienes que modificar este codigo para que acepte el punto decimal (que en realidad es la coma, es numero 44)

saludos  :hola:
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

x.cyclop

  • Miembro de PLATA
  • *****
  • Mensajes: 1039
  • Nacionalidad: mx
    • Ver Perfil
Re: Texbox Que Solo Admita Números
« Respuesta #3 en: Martes 26 de Septiembre de 2006, 00:31 »
0
También puedes usar la función IsNumeric(). :whistling:

- Great works aren't produced on the first try. [Ernest Hemingway]
- Be ambitious, yet realistic in your dreams. Do something that makes a positive impact. Don’t let the nay-sayers get you down. [Bjarne Stroustrup]

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Texbox Que Solo Admita Números
« Respuesta #4 en: Martes 26 de Septiembre de 2006, 00:31 »
0
Cita de: "Tania_D"
Código: Text
  1. Private Sub text1_keypress(keyascii As Integer)
  2. If keyascii = 8 Then '8 es la tecla backspace
  3.  GoTo salir
  4. End If
  5.  If (keyascii < 48 Or keyascii > 57) Then
  6.    keyascii = 0
  7.  End If
  8. salir:
  9. End Sub
  10.  
saludos  :hola:
Puede reacomodar tú código de esta manera sin tantos If
Código: Text
  1. Private Sub text1_keypress(keyascii As Integer)
  2. If (keyascii < 48 Or keyascii > 57) And KeyAscii == 8 Then
  3.    keyascii = 0
  4.  End If
  5. salir:
  6. End Sub
  7.  
El pasado son solo recuerdos, el futuro son solo sueños

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: Texbox Que Solo Admita Números
« Respuesta #5 en: Martes 26 de Septiembre de 2006, 01:25 »
0
Cita de: "RadicalEd"

Puede reacomodar tú código de esta manera sin tantos If

Código: Text
  1. Private Sub text1_keypress(keyascii As Integer)
  2. If (keyascii < 48 Or keyascii > 57) And KeyAscii == 8 Then
  3.    keyascii = 0
  4.  End If
  5. salir:
  6. End Sub
  7.  
:ph34r: ademas de que hay un signo igual (=) extra, lo probe y no acepta la tecla BACKSPACE porque deberia ser asi:

Código: Text
  1. Private Sub text1_keypress(keyascii As Integer)
  2. If (keyascii < 48 Or keyascii > 57) And KeyAscii <> 8 Then
  3.    keyascii = 0
  4.  End If
  5. salir:
  6. End Sub
  7.  
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: Texbox Que Solo Admita Números
« Respuesta #6 en: Martes 26 de Septiembre de 2006, 03:35 »
0
Buenas.

Aqui te dejo un codigo para validar entrada de datos.
En caso de que quieras admitir mas caracteres, los agregas a la variable letras y le cambias el tamaño segun la cantidad de caracteres que almacena


Dim Letras As String * 11 'La variable que contendra los caracteres admitidos
Dim Car As String 'La variable que recuperara el caracter ingresado

Private Sub Form_Load()
  Letras = "0123456789" & vbBack 'Se guardan los valores admitidos en la variable
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
  Car = Chr(KeyAscii) 'Se guarda el caracter ingresado, Chr convierte un valor en su
                                 'respectivo caracter
 
  If InStr(1, Letras, Car) = 0 Then 'Si el caracter no se encuentra dentro de los
    KeyAscii = 0                            'admitidos
  End If
End Sub


Siempre es bueno usar la propiedad .text para comparar, cambiar o recuperar datos porque sino haces referencia al control en si y no a su contenido, asi como usar las comillas ya que sino, estaras comparando una cadena de texto con un numero, que aveces puede traer problemas

If txtTalla.text = "0" then
...


Bueno, eso es todo, espero te sirva de algo
Saludos
The sweet smell of a great sorrow lies over the land.


Soultaker

  • Miembro HIPER activo
  • ****
  • Mensajes: 972
  • Nacionalidad: pe
    • Ver Perfil
Re: Texbox Que Solo Admita Números
« Respuesta #7 en: Martes 26 de Septiembre de 2006, 03:47 »
0
Cita de: "X.Cyclop"
También puedes usar la función IsNumeric(). :whistling:
Asi es

Código: Text
  1. If IsNumeric(Text1.Text) Then Msgbox "OK" Else Msgbox "Solo Numeros"
  2.  

 :comp:
http]
foros,programacion, c, c++, java,
linux, videojuegos, directX, .NET,
visual basic,robotica,microprocesadores

Para los nuevos usuarios de este Foro, por favor leerse esta discusión.
Cómo Hacer Preguntas De Forma Inteligente

Ojos que no ven... pisan caquita
Camarón que se duerme... muere electrocutado


<<< Harol Moreyra Bendezú >>>

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Texbox Que Solo Admita Números
« Respuesta #8 en: Martes 26 de Septiembre de 2006, 07:02 »
0
'//Quisiera hacer mi aportacion
'//Este código tambien limita a que no se pueda introducir texto que no sea numeros aun  a traves del comando pegar (CTRL+V) o click derecho Pegar porque en los demas codigos si lo permite :P

'//Lo aporto a sus concideraciones cualquier correccion bienvenida !

Private Sub Text1_Change()
Dim ls_texto As String
Dim c As Integer

ls_texto = Trim(Me.Text1)

For c = 1 To Len(ls_texto)
  If Not IsNumeric(Mid(ls_texto, c, 1)) Then
    ls_texto = Mid(ls_texto, 1, Len(ls_texto) - 1)
  End If
Next c

Me.Text1 = ls_texto
Me.Text1.SelStart = Len(ls_texto)
End Sub

Saludos
Mexicali B.C.
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

cj_sw

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Texbox Que Solo Admita Números
« Respuesta #9 en: Martes 26 de Septiembre de 2006, 16:31 »
0
Muchas gracias a todos, quiero ser sincero y en verdad me sorprendió el interés que han puesto en responder mi pregunta, voy a probar todos los códigos y luego se los comento.

Gracias.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Texbox Que Solo Admita Números
« Respuesta #10 en: Miércoles 27 de Septiembre de 2006, 00:55 »
0
Cita de: "Tania_D"
Cita de: "RadicalEd"

Puede reacomodar tú código de esta manera sin tantos If

Código: Text
  1. Private Sub text1_keypress(keyascii As Integer)
  2. If (keyascii &#60; 48 Or keyascii &#62; 57) And KeyAscii == 8 Then
  3.    keyascii = 0
  4.  End If
  5. salir:
  6. End Sub
  7.  
:ph34r: ademas de que hay un signo igual (=) extra, lo probe y no acepta la tecla BACKSPACE porque deberia ser asi:

Código: Text
  1. Private Sub text1_keypress(keyascii As Integer)
  2. If (keyascii &#60; 48 Or keyascii &#62; 57) And KeyAscii &#60;&#62; 8 Then
  3.    keyascii = 0
  4.  End If
  5. salir:
  6. End Sub
  7.  
Sorry  :(  :( Es que estoy jugando con Python y me estoy apegando a su sintaxis :comp:  :comp:
El pasado son solo recuerdos, el futuro son solo sueños

zubrowska

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Texbox Que Solo Admita Números
« Respuesta #11 en: Jueves 28 de Septiembre de 2006, 08:26 »
0
bueno esta es otra manera de hacerlo y creo q es un poco más facil; bueno para mi lo es.....

[CODE]
'8 codigo ascii de la tecla backspace
'función asc convierte el caracter a su codigo ascii
If (Asc(e.keychar) <> 8) Then
     If (e.keychar < "0"  0r  e.keychar > "9") Then
            MsgBox("ingrese solo números")
      End If
End If

zubrowska

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Texbox Que Solo Admita Números
« Respuesta #12 en: Jueves 28 de Septiembre de 2006, 08:31 »
0
bueno esta es otra manera de hacerlo y creo q es un poco más facil; bueno para mi lo es.....

Código: Text
  1.  
  2. '8 codigo ascii de la tecla backspace
  3. 'función asc convierte el caracter a su codigo ascii
  4. If (Asc(e.keychar) &#60;&#62; 8) Then
  5.      If (e.keychar &#60; &#34;0&#34;  0r  e.keychar &#62; &#34;9&#34;) Then
  6.             MsgBox(&#34;ingrese solo números&#34;)
  7.       End If
  8. End If
  9.  
  10.  

sorrino

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Texbox Que Solo Admita Números
« Respuesta #13 en: Lunes 9 de Octubre de 2006, 05:10 »
0
jajajaja que manera de encontrar variadas respuestas y muy buen comentario de no me acuerdo quien que dijo (escribio mejor dicho) lo de Ctrl + V que eso en mis programas no lo utilizo tremendo error que ahora al llegar a casa lo mirare.
yo solo te dire que pon una caja de texto en un form y
 
Private Sub text1_keypress(keyascii As Integer)
     text1.text=keyascii
end sub

sorrino

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Texbox Que Solo Admita Números
« Respuesta #14 en: Lunes 9 de Octubre de 2006, 05:12 »
0
podras ver que tecla presionaste, y no te digo el codigo qeu utilizo ya que con los que escribieron arriba esta mas que completo y esta el qeu yo uso jajaja.
salu2 del sorrino