Por que no funciona formato moneda en todos los textbox desde initialize

Tengo un inconveniente que he tratado de solucionar y de buscar en google y no he podido. Tengo en un formulario 5 textbot: importe, descuento, a pagar, efectivo y cambio. Importe y descuento me traen el dato de una celda; a pagar resta el descuento del importe; el textbox efectivo es para ingresar datos; y cambio me resta el valor del efectivo al textbox a pagar. Los datos que se muestran en los textbox los traigo con:

Private Sub UserForm_Initialize()
    txt_Descuento.Value = Sheets("Caja").Range("F26")
    txt_Importe.Value = Sheets("Caja").Range("G26")
    txt_APagar = CDbl(txt_Importe.Value) - CDbl(txt_Descuento.Value)
End Sub

y el formato moneda con:

Private Sub txt_Cambio_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    txt_Cambio = Format(Val(txt_Cambio.Value), " $ #,##0.00")
End Sub

El inconveniente es que al abrir el formulario solo me muestra con formato moneda el textbox importe, los demás no, pero si ingreso los datos manualmente todos los textbox tienen formato. ¿Qué debo hacer en este caso?.

1

1 respuesta

Respuesta
1

H   o  l a:

Cambia tu código por lo siguiente:

Private Sub txt_Efectivo_Change()
    txt_Cambio = Format(txt_Efectivo - txt_APagar, "$ #,##0.00")
End Sub
'
Private Sub UserForm_Initialize()
    txt_Descuento.Value = Format(Sheets("Caja").Range("F26"), "$ #,##0.00")
    txt_Importe.Value = Format(Sheets("Caja").Range("G26"), "$ #,##0.00")
    txt_APagar = Format(CDbl(txt_Importe.Value) - CDbl(txt_Descuento.Value), "$ #,##0.00")
    txt_Efectivo.SetFocus
End Sub

Prueba y me comentas.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Hola Dante, como siempre sacándome de apuros, te comento, el código que me enviaste esta muy bien, me encanta lo que sucede con el textbox de cambio, todos excepto EFECTIVO tienen formato, al ingresar el valor ni siquiera marca los decimales. Espero tu respuesta y mil y mil gracias.

Ya me perdí, ¿a cuál le falta formato al Cambio o al Efectivo?

Hola Dante, al textbox de EFECTIVO

Pon el evento exit para Efectivo:

Private Sub txt_Efectivo_Change()
    txt_Cambio = Format(txt_Efectivo - txt_APagar, "$ #,##0.00")
End Sub
'
Private Sub txt_Efectivo_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If txt_Efectivo <> "" And IsNumeric(txt_Efectivo) Then
        txt_efe = CDbl(txt_Efectivo)
        txt_Efectivo = Format(txt_efe, "$ #,##0.00")
    End If
End Sub
'
Private Sub UserForm_Initialize()
    txt_Descuento.Value = Format(Sheets("Caja").Range("F26"), "$ #,##0.00")
    txt_Importe.Value = Format(Sheets("Caja").Range("G26"), "$ #,##0.00")
    txt_APagar = Format(CDbl(txt_Importe.Value) - CDbl(txt_Descuento.Value), "$ #,##0.00")
    txt_Efectivo.SetFocus
End Sub

'

'

Avísame cualquier duda

'

¡Gracias! Hola Dante, recuerdas que te había comentado que el proyecto se me daño, ninguna macro me funciona, entonces decidí cambiar el proyecto y empezarlo nuevamente. Antes estaba trabajando directamente en las hojas con algunos formularios, ahora estoy trabajando solo formularios para no colocar botones dentro de las hojas. Ha sido un poco dispendioso pero esta resultando, no he llegado a la parte de cobrar factura, y eso va a ser complicado por que desde el formulario de cobrar debo acceder a los datos de la mesa correspondiente. Cuando llegue ahí si me veo en dificultades (que es lo más seguro) te aviso. Muchas gracias, siempre estas al tanto y me sacas de mis apuros, un abrazo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas