Visual Basic - Control de textfield

Life is soft - evento anual de software empresarial
 
Vista:

Control de textfield

Publicado por Jose (4 intervenciones) el 14/11/2003 10:43:56
A ver si alguien me puede echar una mano, tengo un textfield del cual quiero controlar su valor, si es numérico, y demás, eso lo tengo controlado, pero el problema que me he encontrado es que el usuario podría meter por ejemplo "0,.23" por error, el campo ha de ser numérico, como puedo contralar si ha metido más de un punto, o una coma??? porque si no, sigue la aplicación y luego da error "13" "No coinciden los tipos" en una fórmula.

Musas gracias
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

RE:Control de textfield

Publicado por Cecilia Colalongo (3116 intervenciones) el 14/11/2003 11:05:11
En http://www.lawebdelprogramador.com/news/mostrar_new.php?id=93&texto=Visual+Basic&n1=141211&n2=0&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0 se planteo la pregunta una vez. Si quieres tengo un control hecho que hace lo que dices teniendo en cuenta la configuración regional.
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:Control de textfield

Publicado por Jose (4 intervenciones) el 14/11/2003 11:33:34
Pues la verdad que te lo agradecería, si me la pudieses enviar, porque me estoy volviendo loco con este tema.

Muchas gracias por la ayuda
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:Control de textfield

Publicado por Jose (4 intervenciones) el 14/11/2003 13:25:55
Muchas gracias por la ayuda, ya he conseguido hacer la rutina, aquí la pego para el que le sirva

Private Sub txtNumero_KeyPress(KeyAscii As Integer)
If Valor_Repetido(KeyAscii) = 0 Then
MsgBox "Valor no válido"
Exit Sub
End If
End Sub

Public Function Valor_Repetido(KeyAscii As Integer) As Integer
Dim texto As String
Dim existe As Integer
Dim coma As Integer
Dim punto As String

texto = Screen.ActiveControl.Text
existe = InStr(1, texto, Chr(KeyAscii), vbTextCompare)
coma = InStr(1, texto, ",", vbTextCompare)
punto = InStr(1, texto, ".", vbTextCompare)


Select Case Chr(KeyAscii)

Case "0" To "9"
Valor_Repetido = KeyAscii
Case Chr(vbKeyBack)
Valor_Repetido = KeyAscii
Case ".", ","
If existe = 0 And coma = 0 And punto = 0 Then
Valor_Repetido = Asc(",")
Else
Valor_Repetido = 0
KeyAscii = 0
Exit Function
End If
Case Else
Valor_Repetido = 0
KeyAscii = 0
Exit Function
End Select
End Function
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