Visual Basic - TEXTBOX SOLO NUMEROS

Life is soft - evento anual de software empresarial
 
Vista:

TEXTBOX SOLO NUMEROS

Publicado por EDGAR (193 intervenciones) el 14/12/2004 18:23:20
Hola colega, necesito saber que instruccion puedo utilizar para que mi textbox acepte solo numeros pero que el primer numero pueda ser 0 ya que por ejemplo el numero que se necesita ingresar sea 0481. Agradezco de tu ayuda de antemano...
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
Imágen de perfil de RAUL
Val: 2
Ha aumentado su posición en 97 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:TEXTBOX SOLO NUMEROS

Publicado por RAUL (443 intervenciones) el 14/12/2004 19:40:00
BUENO CREO QUE LOS PODRIAS TRABAJAR COMO TEXTOS Y SOLUCIONAR TU PROBLEMA. LUEGO A LA HORA DE OPERARLOS Y /0 ALMACENARLOS PODRIAS PASARLOS A NUMERICOS Y LISTO.
SALUDOS
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

Sólo números

Publicado por Benjo (679 intervenciones) el 24/12/2004 00:28:34
Es una función Casera

'Solo permite introducir numeros en un TextBox
Function SoloNumeros(ByVal KeyAscii As Integer, ByVal Largo As Integer, ByVal LargoPermitido As Integer, ByVal SelStr As Integer) As Integer
' Intercepta un codigo ASCII recibido admitiendo solamente
' caracteres numéricos, además:
' deja pasar sin afectar si recibe tecla de borrado o return

If InStr("0123456789", Chr(KeyAscii)) = 0 Then
SoloNumeros = 0
Else
SoloNumeros = KeyAscii
End If
' teclas especiales permitidas

If SoloNumeros <> 0 Then
If (Largo + 1) > LargoPermitido And SelStr = 0 Then
SoloNumeros = 0
End If
End If
If KeyAscii = 8 Then SoloNumeros = KeyAscii ' borrado atras
If KeyAscii = 13 Then SoloNumeros = KeyAscii ' return

End Function
Private Sub txtCampo_KeyPress(KeyAscii As Integer)
'el parámetro KeyAscii se queda esperando el resultado de la
función
'Se le pasa a la Función el código tecleado, el largo de todos los dígitos tecleados, el largo máximo a permitir en el textbox, y la información de cuantos dígitos se encuentran seleccionados al momento de presionar la tecla.

KeyAscii = SoloNumeros(KeyAscii, Len(txtCampo.Text), 5, txtCampo.SelLength)
End Sub

Es original y muy bueno.

Espero te 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

RE:Sólo números

Publicado por Febles (33 intervenciones) el 24/12/2004 01:34:50
Espero que te sirva, está muy buena.

Function SoloNumeros(ByVal KeyAscii As Integer) As Integer
'permite que solo sean ingresados los numeros, el ENTER y el RETROCESO
If InStr("0123456789/-*", Chr(KeyAscii)) = 0 Then
SoloNumeros = 0
Else
SoloNumeros = KeyAscii
End If
' teclas especiales permitidas
If KeyAscii = 8 Then SoloNumeros = KeyAscii ' borrado atras
If KeyAscii = 13 Then SoloNumeros = KeyAscii 'Enter
End Function

Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = SoloNumeros(KeyAscii)
End Sub
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:TEXTBOX SOLO NUMEROS

Publicado por shakaio (42 intervenciones) el 24/12/2004 16:06:41
Mucho mas facil que los anteriores:
Private Sub txtnumero_KeyPress(KeyAscii As Integer)
If (((KeyAscii >= 48) And (KeyAscii <= 57)) Or KeyAscii = 32 Or KeyAscii = 8 Then
If KeyAscii = 13 Then
End If
Else
beep
KeyAscii = 0
End If
End Sub

da doble click en la caja de texto que ingresas los numeros y en el evento keypress pon el codigo y listo.....
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:TEXTBOX SOLO NUMEROS

Publicado por Ismael Flores Muñoz (1 intervención) el 14/04/2021 21:57:47
Lo que pides se puede lograr con solo dos líneas en el evento KeyPress de un TexBox. Esto es la forma más ingeniosa de simplificar todo el código de los otros usuarios que compartieron más arriba.

Ejemplo:

1
2
3
4
Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 8 Then Exit Sub
    If InStr("0123456789 " & vbCrLf, Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

El código anterior solo permite la entrada de números (0 a 9), tecla de separación (Space) y saltar línea abajo (Enter). Solo si se cumple la condición ]If KeyAscii = 8 Then Exit Sub, o sea, al presionar la tecla (del-prev), borra hacia atrás el texto a la vez que abandona inmediatamente la rutina para omitir la siguiente parte del código, que restringiría cualquier tecla que no sean números, espacio y enter.

Si la condición anterior no se cumple, el evento pasa a la siguiente condición If InStr("0123456789 " & vbCrLf, Chr(KeyAscii)) = 0 Then KeyAscii = 0, donde la función InStr busca dentro de una cadena algún carácter asignado en Chr(KeyAscii). Por ejemplo, el número 53 en código ascii, corresponde a la tecla número 5. De modo Chr(KeyAscii) devuelve el número 5 si la tecla presionada correspondía al código ascii 53. Como el 5 se encuentra dentro de la cadena "0123456789 ", InStr devuelve 1 (la condición no se cumple), y no se ejecuta la sentencia KeyAscii = 0 que le sigue, lo cual permite que el TexBox muestra el 5. Si se presiona cualquier tecla diferente al contenido de la cadena, InStr devolverá 0 (porque no encontrará la tecla asociada dentro de la cadena), cumpliéndose así la condición y ejecutando la sentencia KeyAscii = 0 para restringir esa tecla presionada.

Observemos que la cadena que contiene los caracteres permitidos es: "0123456789 " & vbCrLf, donde están los números 0 a 9, un espacio después de 9 y entes de las comillas (que corresponde a la tecla Space), y vbCrLf, que es el comando que permite saltar de línea en algún texto (Enter). Dentro de esa cadena se pueden introducir más caracteres para personalizar la restricción. Hay teclas que no tienen un carácter específico, y solo es posible su lectura en código Ascii, como sucede con la tecla "borrar atrás", cuyo código ascii es 8. Como no podemos manejarla dentro de la cadena, la ponemos en una condición aparte, previo a la condición que solo permite números. Es necesario que después de una condición de lectura de código ascii, pongamos Exit Sub para abandonar la rutina y el TexBox permita su entrada.

Si quieres saber el código ascii de alguna tecla para emplearla en tu restricción de teclas de un TexBox, un pequeño truco es hacer esto:

1
2
3
Private Sub Text1_KeyPress(KeyAscii As Integer)
    Caption = KeyAscii
End Sub

En el título de la ventana te aparecerá el código ascii de cualquier tecla que presiones. Si quieres saber a qué carácter corresponde dicho código, puedes cambiar Caption = KeyAscii por Caption = Chr(KeyAscii). Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 145
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:TEXTBOX SOLO NUMEROS

Publicado por Sah1d Ra (191 intervenciones) el 15/04/2021 18:19:36
Hola!

Excelente lógica y todos pensamos de manera diferente con la misma finalidad.

Hace tiempo también llegue a esa conclusión, solo que al final me gusta hacerle
al usuario que no sigue las reglas y tecleo cualquier cantidad de cosas como lo
haría alguno de ellos, a donde llego a la siguiente interrogante:

Que pasa si copio el texto "H01a" y sobre el TextBox doy clic izquierdo y pego la
información?, mi solución a ello fue jugar con el MaxLengh así solo permitiría se
copie de un carácter a la vez, y una vez validado incrementarlo.


y de la pregunta original solo restaría que el agregue la validación de que el primer
numero sea cero.

saludos y felices líneas de programac1on
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