Textbox y formato moneda en userform vba excel

Después de haber navegado por Todo Expertos y las búsquedas de Google, no puedo solucionar el problema que tengo, que, estoy seguro, hay algo que estoy pasando por alto y no puedo darme cuenta.

Tengo una caja para contar el efectivo y quiero hacer la suma diariamente dentro de un userform. En cada Texbox hay que volcar el efectivo de cada denominación. Ej.: Textbox1 (valor en billetes de $100), TextBox2 (valor en billetes de $50) y así sucesivamente.

Todo funciona bien, hasta que le aplico formato al texbox para que en vez de mostrarme el valor así 5000 me lo muestre así $ 5.000. Cuando hago esto, el valor que devuelve a la celda es en formato texto y entonces excel no lo suma en forma automática.

Seguidamente colocaré el código para que puedas ver el ejemplo.

Desde ya agradezco la ayuda que pueda brindarme!

Option Explicit

Private Sub CommandButton1_Click()

Dim cien, cincuenta, veinte, diez, cinco, dos, monedas As Currency
On Error Resume Next
cien = TextBox1
cincuenta = TextBox2
veinte = TextBox3
diez = TextBox4
cinco = TextBox5
dos = TextBox6
monedas = TextBox7

'On Error Resume Next

Cells(2, 2) = cien
Cells(3, 2) = cincuenta
Cells(4, 2) = veinte
Cells(5, 2) = diez
Cells(6, 2) = cinco
Cells(7, 2) = dos
Cells(8, 2) = monedas
Unload UserForm1

End Sub

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = Format(Val(TextBox1.Value), " $ #,##0.00")
' TextBox1 = FormatCurrency(TextBox1, 2)
End Sub

Private Sub TextBox7_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
TextBox7 = Format(Val(TextBox7.Value), "##.00")
End Sub

2 respuestas

Respuesta
2

Carlos (y Valero). Un par de consideraciones básicas:

a) Vamos a suponer que en la celda A1 tienes al número: -2.345,67 (menos dos mil trescientos cuarenta y cinco con 67). Para lo que te explicaré, el formato de la celda NO TIENE NI LA MÁS MÍNIMA IMPORTANCIA (con colores, sin colores, con símbolo de una moneda... ¡Nada de ello importa!), ¿Ok?

b) Cuando hagas:
TextBox1 = Range("A1")

Verás en el TextBox1 algo así:
-2345,67 (si la Configuración Regional de tu PC especifica a la coma como Separador Decimal), o
-2345.67 (si la Configuración Regional de tu PC especifica al punto como Separador Decimal)
c) ¿Qué importancia tiene lo anterior?... Pues te está indicando "a los gritos" cual "texto" entenderá el VBA como número cuando programes.

d) Supongamos -ahora- que haces lo siguiente por razones estéticas:
TextBox1 = Format(TextBox1, "$ #,##0.00")
(por favor: no pierdas de vista que SIEMPRE debes utilizar la expresión "$ #,##0.00"... ¡A la inglesa!)
Tras lo anterior, verás en el TextBox1:
-$ 2.345,67 (si la Configuración Regional de tu PC especifica a la coma como Separador Decimal), o
-$ 2,345.67 (si la Configuración Regional de tu PC especifica al punto como Separador Decimal)

e) Para terminar, y para devolver el dato anterior a la celdas, simplemente haces:
Range("A2") = CCur(TextBox1)
Por ejemplo.
¿Qué verás en la celda?...
Pues aquello que la celda tenga dispuesto como formato numérico.

Respuesta
1

Necesito el resto para poder hacer pruebas, lo que puede construir con lo que me das veo que funciona perfecto, tu metes un número en el TextBox y lo convierte a formato con moneda o con separadores, pero la parte donde está el error no sale aquí. Si esos TextBox están asociados a celdas y las sumas que hagas en la hoja no salen. La única forma de poder tener lo mismo que tienes tú es que me pases el libro. Si puedes colgarlo en una página de intercambio como Dropbox o Google Drive sería lo mejor para hacérmelo llegar.

¡Gracias! Gracias por su atención...! No utilizo Dropbox o Google Drive. No tengo experiencia, pero voy a ver cómo funciona y trataré de enviarlo.

Califico por tu atención esmerada siempre !!!

Un abrazo!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas