Programación General > Visual Basic para principiantes

 text con numeros

(1/3) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa