SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Visual Basic para principiantes => Mensaje iniciado por: cj_sw en Lunes 25 de Septiembre de 2006, 20:39

Título: Texbox Que Solo Admita Números
Publicado por: cj_sw en Lunes 25 de Septiembre de 2006, 20:39
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
Título: Re: Texbox Que Solo Admita Números
Publicado por: RadicalEd en Lunes 25 de Septiembre de 2006, 21:08
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
Título: Re: Texbox Que Solo Admita Números
Publicado por: Toph en Martes 26 de Septiembre de 2006, 00:27
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:
Título: Re: Texbox Que Solo Admita Números
Publicado por: x.cyclop en Martes 26 de Septiembre de 2006, 00:31
También puedes usar la función IsNumeric(). :whistling:
Título: Re: Texbox Que Solo Admita Números
Publicado por: RadicalEd en Martes 26 de Septiembre de 2006, 00:31
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.  
Título: Re: Texbox Que Solo Admita Números
Publicado por: Toph en Martes 26 de Septiembre de 2006, 01:25
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.  
Título: Re: Texbox Que Solo Admita Números
Publicado por: Epa en Martes 26 de Septiembre de 2006, 03:35
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
Título: Re: Texbox Que Solo Admita Números
Publicado por: Soultaker en Martes 26 de Septiembre de 2006, 03:47
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:
Título: Re: Texbox Que Solo Admita Números
Publicado por: F_Tanori en Martes 26 de Septiembre de 2006, 07:02
'//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.
Título: Re: Texbox Que Solo Admita Números
Publicado por: cj_sw en Martes 26 de Septiembre de 2006, 16:31
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.
Título: Re: Texbox Que Solo Admita Números
Publicado por: RadicalEd en Miércoles 27 de Septiembre de 2006, 00:55
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 < 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.  
Sorry  :(  :( Es que estoy jugando con Python y me estoy apegando a su sintaxis :comp:  :comp:
Título: Re: Texbox Que Solo Admita Números
Publicado por: zubrowska en Jueves 28 de Septiembre de 2006, 08:26
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
Título: Re: Texbox Que Solo Admita Números
Publicado por: zubrowska en Jueves 28 de Septiembre de 2006, 08:31
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.  
Título: Re: Texbox Que Solo Admita Números
Publicado por: sorrino en Lunes 9 de Octubre de 2006, 05:10
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
Título: Re: Texbox Que Solo Admita Números
Publicado por: sorrino en Lunes 9 de Octubre de 2006, 05:12
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