Programación General > Visual Basic para principiantes
text con numeros
master33:
Hola, tengo unos textbox que almacenan numeros (ingresados por teclado) y lo que necesito es que aparescan los puntos como separdor de miles y no lo se hacer de antemano gracias
Toph:
--- Cita de: "master33" ---Hola, tengo unos textbox que almacenan numeros (ingresados por teclado) y lo que necesito es que aparescan los puntos como separdor de miles y no lo se hacer de antemano gracias
--- Fin de la cita ---
tendrias que ir recorriendo el textbox caracter por caracter para que cuando hayas revisado 3 le agregues ahi una coma o punto o un espacio (que es lo que ahora se utiliza para separar miles), con la ayuda de la funcion mid (cadena, inicio, final) puedes partir tu cadena donde lo necesites e introducir ahi la coma o el punto, por ejemplo se introduce el numero 89325 en el textbox para separar los miles y ver 89,325, deberias recortar la cadenas con mid (text1.text,1,2) estarias recortando desde el caracter 1 hasta el 2 o sea 89, luego con mid(text1.text,3,5) obtendrias el 325 y seria de lo que te da el primer mid + ","+ lo que te da el otro mid y ya tendrias el dato deseado, aqui te dejo la rutina, pruebala con dos textbox y un commandbutton
--- Código: Visual Basic ---Private Sub Command1_Click()a = Len(Text1.Text) 'en text1.text se introduce el numerodato = Text1.Textb = alazo:b = b - 3If b <= 0 ThenGoTo finElsea = Len(dato)dato1 = Mid(dato, 1, b)dato2 = Mid(dato, b + 1, a)dato = dato1 + "," + dato2End IfGoTo lazofin:Text2.Text = dato 'en text2.text queda el numero separadoEnd Sub
Eso es lo que se me ocurrio :comp: , podrian haber otras formas pero por ahora no veo otra :blink:
saludos.
F_Tanori:
Puedes usar ademas del codigo de TOPH, la funcion format
--- Código: Visual Basic ---Private Sub Text1_Validate(Cancel As Boolean) Me.Text1 = Format(Me.Text1, "###,###,##0.00")End Sub
Tambien Existe el control, MaskEditBox
Saludos
Toph:
--- Cita de: "F_Tanori" ---Puedes usar ademas del codigo de TOPH, la funcion format
--- Código: Visual Basic ---Private Sub Text1_Validate(Cancel As Boolean) Me.Text1 = Format(Me.Text1, "###,###,##0.00")End Sub
Tambien Existe el control, MaskEditBox
Saludos
--- Fin de la cita ---
:P mucho mas facil asi, una pregunta F_Tanori para utilizar otro tipo de separador como un punto o simplemente un espacio ¿se puede de la misma forma?
EDIT: :P me respondo a mi misma pense que era tan facil como cambiar ###.###.##. o poner espacios pero con punto definitivamente no funciona y con espacio da problema en numeros grandes
saludos.
Nebire:
Efectivamente, con format$ , además hay que usarlo en el evento validate tal como muestra F_Tanori, pero de paso aprovechamos para comprobar si está dentro de los valores deseados.
Aquí el ejemplo completo que formatea el número pero además controla si el valor introducido está dentro del rango 5-100, esto es no acepta otros valores distintos de los de dicho rango.
--- Código: Visual Basic --- Private Sub Text1_Validate(Cancel As Boolean) Text1.Text = Format$(Text1.Text, "##,##0.00") If (Val(Text1.Text) < 5) Or (Val(Text1.Text) > 100) Then Beep Cancel = True End IfEnd Sub
Por supuesto el control text1 debe tener su propiedad CausesValidation a True, de otro modo no recibe dicho evento... (por defecto Causesvalidation se establece a True, por lo que salvo que se cambie desde código no haría falta cambiarlo, pero para prevenir despistes quizás convenga añadir una línea en la carga del formulario:
--- Código: Visual Basic --- Private Sub Form_Load() Text1.CausesValidation = TrueEnd Sub y por último si quieres eliminar los decimales cuando estos son ceros el siguiente código lo muestra... sólo lo elimina cuando el valor ha sido 'validado', para no hacer pensar al usuario que el problema son los decimales... [code=vb] Private Sub Text1_Validate(Cancel As Boolean) Text1.Text = Format$(Text1.Text, "##,##0.00") If (Val(Text1.Text) < 5) Or (Val(Text1.Text) > 100) Then Beep Cancel = True Else If Right$(Text1.Text, 2) = "00" Then Text1.Text = Format$(Text1.Text, "##,##0") End If End IfEnd Sub
[/code]
Navegación
[#] Página Siguiente
Ir a la versión completa