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

Ayuda! Funcion para Validar Si es Numerico

Estas en el tema de Ayuda! Funcion para Validar Si es Numerico en el foro de Visual Basic clásico en Foros del Web. Hola que tal.... Bueno el problema es el siguiente tengo un codigo que me valida si el texto ingresado es Numerico o no...Si no es ...
  #1 (permalink)  
Antiguo 06/09/2008, 19:12
 
Fecha de Ingreso: diciembre-2007
Ubicación: Caracas - Venezuela
Mensajes: 32
Antigüedad: 16 años, 4 meses
Puntos: 1
Ayuda! Funcion para Validar Si es Numerico

Hola que tal....

Bueno el problema es el siguiente tengo un codigo que me valida si el texto ingresado es Numerico o no...Si no es numerico me lanza un mensaje de alerta para indicar que solo se aceptan datos numericos..y asi mismo borra el caracter no deseado o lo sustituye por "", luego si deseas ingresar de nuevo un numero simplemente es negado, es decir no lo ingresa sino lo remplaza de una vez por ""...El codigo me funciona perfecto cuando lo coloco directo...en el evento de Change(). Ahora bien quiero convertirlo en una funcion por que necesito utilizarlo de vez en cuando pero creo que todavia no entiendo como es en Visual Basic..

El código para convertirlo en función es (Original)

Private Sub txtCIPasaporte_Change()
Dim strCIPasaporteText As String, i As Integer
Dim RemplazoCIPasaporte As String


For i = 1 To Len(txtCIPasaporte.Text) Step 1
strCIPasaporteText = Mid(txtCIPasaporte.Text, i, 1)
If Not (IsNumeric(strCIPasaporteText)) Then
While MensajeDatosCaracterCIPasaporte = 0
MsgBox "Solo permiten datos numéricos en el campo (Cédula). Por favor verifique su entrada.", vbOKOnly + vbInformation, "Mensaje del Sistema..."
MensajeDatosCaracterCIPasaporte = MensajeDatosCaracterCIPasaporte + 1
Wend
RemplazoCIPasaporte = Replace(txtCIPasaporte.Text, strCIPasaporteText, "")
txtCIPasaporte.Text = RemplazoCIPasaporte
End If
Next

'Validación de los datos dentro del campo texto
' Esto permite comenzar con el tabulador en el
' último caracter escrito
txtCIPasaporte.Text = txtCIPasaporte.Text
a = Len(txtCIPasaporte.Text)
txtCIPasaporte.SelStart = a

Como dije quiero llevar este código a ser una función pero..tengo esto::(Funcion)


Public Function ValidarNumerico(Obj As String)
Dim Cont As Integer, Remplazo As String
Dim Str As String

For Cont = 1 To Len(Obj) Step 1
Str = Mid(oj, Cont, 1)
If Not (IsNumeric(Str)) Then
While MensajeDatosCaracterCIPasaporte = 0
MsgBox "Solo permiten datos numéricos en el campo (Cédula). Por favor verifique su entrada.", vbOKOnly + vbInformation, "Mensaje del Sistema..."
MensajeDatosCaracterCIPasaporte = MensajeDatosCaracterCIPasaporte + 1
Wend
Remplazo = Replace(Obj, Str, "")
Obj = Remplazo
End If
Next
Obj = Obj
a = Len(Obj)
Obj = a


Pero creo que no se como interactua el textBox o el txtCIPasaporte.text dentro de la funcion .

Function ValidarNumerico(Obj As String) 'Obj deberia ser el Texto del TextBox...


Gracias ..a todos
  #2 (permalink)  
Antiguo 06/09/2008, 20:04
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Respuesta: Ayuda! Funcion para Validar Si es Numerico

Ahi te arme una funcion que verifica cada caracter (ascii) ingresado si corresponde a un numero (agrego el punto decimal y la tecla backspace)

En vez de usar change, usas KeyPress para verificar cada ascii... Si no es un numero aparece el mensaje de alerta, y elimina ese keypress


Código:
Public Function EsNumero(KeyAscii As Integer) As Boolean
'Agrego el "." decimal (lo podes cambiar por "," si usas ese...
'Y agrego el Ascii "8" que es la tecla BORRAR
Select Case KeyAscii
    Case Asc("0"), Asc("1"), Asc("2"), Asc("3"), Asc("4"), Asc("5"), Asc("6") & _
    Asc("7"), Asc("8"), Asc("9"), Asc("."), 8
        EsNumero = True
    Case Else
        EsNumero = False
End Select
End Function

Private Sub Text1_KeyPress(KeyAscii As Integer)
If EsNumero(KeyAscii) = False Then
    MsgBox "Este es el mensaje de alerta", vbCritical
    KeyAscii = 0    'no escribo el caracter
End If
End Sub
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 02:32.