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
Y por q no haces q el textbox en cuestion solo acepte numeros y ya esta??
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then Exit Sub
If KeyAscii < 48 Or KeyAscii > 58 Then
KeyAscii = 0
End If
End Sub
porque tengo alrededor de 30 textbox para validar :laugh:
Pues los llamas a todos igual (vamos creas una matriz de controles) y pegas el mismo codigo:
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
If KeyAscii = 8 Then Exit Sub
If KeyAscii < 48 Or KeyAscii > 58 Then
KeyAscii = 0
End If
End Sub
Y solucionado, ninguno admite letras ;)
esos txt despues van a una base de datos
y si todos tienen el mismo nombre se me lia :-X
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:
CitarSub 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 ;)
muchas gracias , ahora a renegar con el ado ;D
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)
Dim error As String
Si pretendes pasar "error" como argumento para tu función debería de quedar así:
Fuction Validar(ElTexto As String, QueError As String)
If Not IsNumeric(ElTexto)Then
MsgBox ("Error en (" & QueError & ")")
End If
Porque al declarar otra vez la error como String en la segunda linea de tu código eliminas el argumento que habías pasado.
End Function
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.