Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Solo Numeros y Punto Decimal

Estas en el tema de Solo Numeros y Punto Decimal en el foro de Visual Basic clásico en Foros del Web. No me funciona el motor de busqueda en el foro...no me muestra nada asi que escribo mi pregunta....como permitir que un text acepte solo numeros...y ...
  #1 (permalink)  
Antiguo 15/08/2006, 22:33
 
Fecha de Ingreso: diciembre-2004
Mensajes: 475
Antigüedad: 19 años, 4 meses
Puntos: 4
Solo Numeros y Punto Decimal

No me funciona el motor de busqueda en el foro...no me muestra nada
asi que escribo mi pregunta....como permitir que un text acepte solo numeros...y el punto decimal....
saludos.... probe los ejemplos que encontre...pero no funcionan...
veran tengo tres text's


Importe text1.text
Iva text2.text
Total text3.text

al cargar estan en cero...programe su propiedad el evento change cuando cambia el primero...pues automaticamente me muestre el resultado....y si cambia el segundo...lo vuelva a mostrar....pero si meto una letra pues ya sabran....

saludos...
  #2 (permalink)  
Antiguo 16/08/2006, 07:18
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
en las faq's hay un ejemplo para que un textbox acepto solo numeros, el punto es el ascii = 46 nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #3 (permalink)  
Antiguo 16/08/2006, 20:07
Avatar de black_devil  
Fecha de Ingreso: junio-2006
Mensajes: 89
Antigüedad: 17 años, 10 meses
Puntos: 1
a ver si te sirve

Para aceptar sólo números

Código:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii <> 8 Then
If Not IsNumeric("0" & this & Chr(KeyAscii)) Then
Beep
KeyAscii = 0
End If
End If
End Sub
Para convertir tu texto con decimal:

Código:
Private Sub Text1_Validate(Cancel As Boolean)
Text1.text = Format(Text1.text,"#,##0.0")
End Sub
En formato moneda:

Código:
Text1.text = Format(Text1.text,"$#,##0.0")
Después del 0. agregas los decimales que quieres mostrar, por ej. $1000,0
la idea es que cuando presiones enter, se transforme tu resultado ...

Ojo, para que trabajes con enter coloca esto en el evento del FORM

Código:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then SendKeys "{tab}"
End Sub
y en la propiedad KeyPreview del FORM déjalo en True para que trabajes con enter...


Saludos
  #4 (permalink)  
Antiguo 16/08/2006, 20:17
 
Fecha de Ingreso: diciembre-2004
Mensajes: 475
Antigüedad: 19 años, 4 meses
Puntos: 4
Agrdezco sus comentarios....solucione el problema....
de la siguiente manera:

Private Sub Text9_KeyPress(KeyAscii As Integer)
Dim Tot1 As Double
Dim tot2 As Double
Dim tot3 As Double
Dim tot4 As Double
If ((KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii < 44 Or KeyAscii > 46)) Then
If (KeyAscii <> 8) Then KeyAscii = 0
If Text9.Text = "" Then
Text9.Text = 0
End If
If (Text12.Text = 0) Then
' Multiplico en importe por el IVA
Tot1 = Text10.Text * Text9.Text
'limito a dos decimales el resultado
tot2 = Round(Tot1, 2)
Text14.Text = tot2
'Sumo el IVA obetnido con dos decimales al importe...
tot3 = tot2 + Text9.Text
tot4 = Round(tot3, 2)
Text11.Text = tot4
End If
End If
End Sub

No se si sea lo correcto pero funciona....acepto cambios
  #5 (permalink)  
Antiguo 17/08/2006, 05:38
Avatar de elsaky  
Fecha de Ingreso: junio-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 53
Antigüedad: 17 años, 10 meses
Puntos: 0
otra opcion

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii = 0
ElseIf KeyAscii <> 8 Then
If Not IsNumeric(Chr(KeyAscii)) Then
KeyAscii = 0
End If
End If
End Sub

saludos
  #6 (permalink)  
Antiguo 22/08/2006, 16:54
 
Fecha de Ingreso: agosto-2006
Mensajes: 13
Antigüedad: 17 años, 8 meses
Puntos: 1
Jose

este codigo te permite solo escribir numeros el punto y borrar si queres q se ejecute algo le preguntas si el KeyAscii = 13 y si si es le colocas el codigo ay, el KeyAscii =13 equivale a enter

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii > 47 And KeyAscii < 58 Or KeyAscii = 46 Or KeyAscii = 8 Then

Else
KeyAscii = 0
End If
if KeyAscii =13 then
'codigo q se desea ejecutar
else
'pues nada
end if
End Sub
  #7 (permalink)  
Antiguo 24/08/2006, 07:52
jorevale
Invitado
 
Mensajes: n/a
Puntos:
Por falta de variantes no será... jejeje

Public Function SoloNumeros(ByVal KeyAscii As Integer) As Integer
If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
If InStr("0123456789.,-", Chr(KeyAscii)) = 0 Then
SoloNumeros = 0
Beep
Else
SoloNumeros = KeyAscii
End If
If KeyAscii = 8 Then SoloNumeros = KeyAscii
End Function
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:31.