Título: ayuda con procedimiento Publicado por: 4D1cTo en 12 Febrero 2008, 05:30 am estoy realizando un procedimiento para validar datos que sean solo de tipo numerico
Sub Valida(txtVar, error) Dim error As String If IsNumeric(txtVar) = False Then MsgBox ("Error en (" & error & ")") End If End Sub No se donde esta el error , lo llamaria de la siguiente manera Valida (txtValida,Celular) yo quiero que valide el txtValida y en la parte del error muestre "Error en Celular" se entiende ? gracias Título: Re: ayuda con procedimiento Publicado por: ~~ en 12 Febrero 2008, 12:17 pm Y por q no haces q el textbox en cuestion solo acepte numeros y ya esta??
Código: Private Sub Text1_KeyPress(KeyAscii As Integer) Título: Re: ayuda con procedimiento Publicado por: 4D1cTo en 12 Febrero 2008, 12:24 pm porque tengo alrededor de 30 textbox para validar :laugh:
Título: Re: ayuda con procedimiento Publicado por: ~~ en 12 Febrero 2008, 12:29 pm Pues los llamas a todos igual (vamos creas una matriz de controles) y pegas el mismo codigo:
Código: Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer) Y solucionado, ninguno admite letras ;) Título: Re: ayuda con procedimiento Publicado por: 4D1cTo en 12 Febrero 2008, 12:31 pm esos txt despues van a una base de datos
y si todos tienen el mismo nombre se me lia :-X Título: Re: ayuda con procedimiento Publicado por: ~~ en 12 Febrero 2008, 12:48 pm Te refieres a ellos por su index, por ej text1(25).text...
A mi me parece mas practico q andar llamando a una funcion todo el rato, pero weno si kieres la funcion kedaria asi: Citar Sub Validar(txt As TextBox, Error As String) Dim n As Integer, Digito As String * 1 For n = 1 To Len(txt.Text) Digito = Mid(txt.Text, n, 1) If Asc(Digito) < 48 Or Asc(Digito) > 58 Then MsgBox "Error en (" & Error & ")" Exit Sub End If Next n End Sub Private Sub Command1_Click() Call Validar(Text1, "Celular") End Sub Si tiene una sla letra el textbox salta error, si no no ;) Título: Re: ayuda con procedimiento Publicado por: 4D1cTo en 12 Febrero 2008, 13:15 pm muchas gracias , ahora a renegar con el ado ;D
Título: Re: ayuda con procedimiento Publicado por: black_jjk en 18 Febrero 2008, 20:08 pm Lo que ha dicho EON es correcto, ese es el camino que deberías seguir si estas apenas diseñando tu programa o si tuvieras ganas de cambiarle el nombre a tus controles y crear una matríz de controles, pero por lo visto de da flojera o simplemente no te gusta la idea, tú código esta mal desde un principio:
Citar Sub Valida(txtVar, error) Si pretendes pasar "error" como argumento para tu función debería de quedar así:Dim error As String Código: Fuction Validar(ElTexto As String, QueError As String) End Function Título: Re: ayuda con procedimiento Publicado por: Chefito en 19 Febrero 2008, 03:54 am Mmmmm, por lo que veo es un número de teléfono lo que quiere tratar (por lo de celular). Hay que tener en cuenta que la función IsNumeric da como verdadero a un número con una coma o varios puntos (incluso puntos seguidos, haz la prueba), según la configuración del caracter decimal. Por eso, cuidado! que lo mismo no le interesa que le entre esos caracteres ;) (y menos puntos a gogo :)). Una forma de solucionarlo sería quitando estos caracteres con la función replace (ejem: texto=replace(texto,",",""). Pero hay no solo acaba el problema, sino que tambien acepta números como 2,342342E+22, ya que vienen de los tipos single y double del vb. Más para sustituir con replace jajajajaja. Pero sigue habiendo más problemas........ también da como verdadero los números hexadecimales (&had) y octales (&34)....también el signo más y menos (+,-) al principio del número....puffffff Más sustituciones. Y quien sabe que más aceptará :rolleyes:.
Ya se que son casos raros de ver, pero todo puede pasar.....y son fallos. Al final pienso que se debe restringir la entrada de teclas con el evento keypress o hacer lo que dice eon....revisar los caracteres uno a uno. Saludos. P.D. Todas estas sustituciones se deberían realizar despues de que IsNumeric hubiese dado verdadero al número. Pero sigo pensando que no es lo más correcto. |