¿Cómo darle un formato al TextBox?

¿Cómo darle un formato de numero a una caja de texto de un formulario?
Intente con esta lineas, y me funciona pero solo para enteros.
Private Sub txtMonto_Change()
txtMonto.Text = VBA.Format(txtMonto.Text, "#,###,###")
End Sub
Y resulta ser que cuando introduzco el valor va adquieriendo el formato pero no se como hacer para que soporte decimales, espero que me podas ayudar al igual que otras ocasiones.

2 Respuestas

Respuesta
2

Encontré la solución verificando a cada evento change la existencia de una coma en el textbox llamado Monto (en mi caso). De este modo se permite incluso borrar la coma al usuario en caso de error al digitar

Private Sub Monto_Change()
If InStr(Me.Monto, ",") = 0 Then

FORMATOMONTO = "#,###,###"
Else
FORMATOMONTO = "#,###,###.##"
End If
Monto.BackColor = &HFFFFC0
Monto.Text = VBA.Format(Monto.Text, FORMATOMONTO)
End Sub

la parte del backcolor no es importante, se puede prescindir de eso, y la variable FORMATOMONTO está definida como privada para todo el formulario. Al incializar el formulario le asigno FORMATOMONTO = "#,###,###", que corresponde al formato sin coma.

Llegué como 12 años tarde a responderle al amigo, pero espero que a alguno por ahí pueda serle útil esto.

Respuesta
1
Solo tendrías que agregarle algo al formato
"#,###,###.00"
O
"#,###,###.##"
Pero hacer esto en una caja de texto es una lata, esto es por que al modificar el valor de la misma cada de texto en el evento Change, "vuelves" a desencadenar el evento, el cursor de escritura casi siempre se mueve al final y es un problema para escribir un simple numero, pero, como siempre dijo, cada quien lo puede usar como más le guste.
La jaja de texto esta en un formulario en VBA
¿Si no es una caja de texto? ¿Qué puedo utilizar?, partí del supuesto de que no se nada, lo poco que he ido aprendiendo a sido de tu archivo de facturación que una ves muy gentilmente me regalaste y del cual he aprendido bastante. Por certo tu página es muy educativa, estaba esperando esa famosa explicación paso a paso del archivo de facturación, que esta muy bueno, ¿pregunto por casualidad tienes otro como ese?
La verdad es que ese proyecto se estaba haciendo entre varios de la lista, pero la verdad es que como nadie me apoyo lo he dejado, pero un día de esto veras que les doy la sorpresa, respecto a tu pregunta, puede tener varias respuestas, para contestarla, primero preguntate, ¿cuál es mi propósito?, toma en cuenta que para un cuadro de texto TODO lo que introduzcas sera un texto, el problema no es tanto de darle formato, sino que después como interpretar este numero, prueba las siguientes lineas de código en un UserForm, con un cuadro de texto y un botón de comando...
Dim Num As Double
TextBox1.Text = Format(Rnd() * 100000000, "$ #,##0.00")
Num = TextBox1.Text
MsgBox Num
VB es flexible a la hora de las conversiones, pero no es 100% fiable...
Puedes darle formato a tu numero en el evento Exit del cuadro de texto y los más interesante es que puedes validar su contenido y cancelar si es necesario...
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox1.Text) Then
TextBox1.Text = Format(TextBox1.Text, "#,##0.00")
Else
MsgBox "Introduzca un numero valido"
Cancel = True
End If
End Sub
En programación hay muchas maneras de resolver las cosas, lo importante es saber que hace y como trabajan las instrucciones así como la secuencia de estas ordenes.
¿Pero habría alguna manera de que en el momento en que este incluyendo los datos en el formulario aparezca el formato? Es decir que si estoy incluyendo por ejemplo 1000000.00 no parezca como 1000000.00, ¿sino 1,000,000.00 es decir que le muestre que numero se esta incluyendo?
No se a que te refieres con -el momento en que este incluyendo los datos-, ¿al escribir?, ¿Al entrar?, recuerda que la programación en VBA es CONDUCIDA por EVENTOS, solo dime en que momento lo quieres, al CAMBIAR (CHANGE) ya lo hiciste tu y ya viste el inconveniente que tiene, así que supongo sera en otro MOMENTO.
Si, lo se que es por eventos, aun no me acostumbro, me refería a que al momento de que se abre el formulario y uno esta incluyendo los datos en el mismo Formulario, es decir cuando esta escribiendo digamos en el compo de monto cuando uno escribe 1000000.00 aparezca 1,000,000.00 pero en el momento de escribirlos, espero me puedas ayudar
Creo que no me explico bien, te vuelvo a escribir...
-Al CAMBIAR (CHANGE) ya lo hiciste tu y ya viste el inconveniente que tiene, así que supongo sera en otro MOMENTO-
El MOMENTO (EVENTO) que quieras, ya lo has probado, es el evento CHANGE, ya viste como trabaja...
Mauricio
P.D. No tienes por que disculparte de nada

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas