Excel - Textbox formato moneda

   
Vista:

Textbox formato moneda

Publicado por Damian dekagraff@gmail.com (6 intervenciones) el 21/07/2015 15:16:39
Estimados, buenos días

Realizo la siguiente consulta debido a que ya agoté todos los medios de consulta que conozco a mi alcance. Estoy haciendo un sistema de facturación y en uno de mis forms tengo 5 textbox (supongamos textbox1, textbox2, etc). Lo que quiero lograr es que se sumen los valores de los 5 en un sexto textbox6. y que todos se muestren con formato de moneda ($#.##). El problema radica en que actualmente puedo ingresar y me hace bien el calculo solo si coloco decimales con el . (punto) y no así con la coma. Pero en los 5 textbox trabaja con punto (.) y el resultado en el sexto lo muestra con coma (,)

Les comparto el código que usé de ejemplo en el primer textbox para ver si pueden ver que estoy haciendo mal.

Muchas gracias.

Utilizo un código BeforeUpdate en cada textbox para que realice el cálculo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub txt_P1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim P1, P2, P3, P4, P5 As Double
Dim Resultado As Double
 
If txt_P1 <> Empty Then
P1 = Val(txt_P1)
End If
If txt_P2 <> Empty Then
P2 = Val(txt_P2)
End If
If txt_P3 <> Empty Then
P3 = Val(txt_P3)
End If
If txt_P4 <> Empty Then
P4 = Val(txt_P4)
End If
If txt_P5 <> Empty Then
P5 = Val(txt_P5)
End If
Resultado = CDbl(P1) + CDbl(P2) + CDbl(P3) + CDbl(P4) + CDbl(P5)
txt_PT = Resultado
 
End Sub


Y otro evento Change para validar que no se introduzcan letras.

1
2
3
4
5
6
7
8
9
Private Sub txt_P1_Change()
If Not IsNumeric(txt_P1.Text) And _
txt_P1.Text <> "" Then
Beep
MsgBox "Solo se pueden ingresar números y los decimales deberán indicarse con punto en lugar de coma."
txt_P1.Text = ""
txt_P1.SetFocus
End If
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo

Textbox formato moneda

Publicado por Andres Leonardo (483 intervenciones) el 21/07/2015 19:20:38
Yo haria algo asi ...

Cuando pierde el foco lo formatearia. el ejemplo esta con tres textos y un boton... cabe indicar que dos textos son la cantidad y el tercero el total


Public p1, p2 As Double
Private Sub Command1_Click()
Text3.Text = p1 + p2
Text3.Text = Format(Text3.Text, "$ ###.00")
End Sub

Private Sub Text1_LostFocus()
p1 = Val(Text1.Text)
Text1.Text = Format(Text1.Text, "$ ###.00")
End Sub

Private Sub Text2_LostFocus()
p2 = Val(Text2.Text)
Text2.Text = Format(Text2.Text, "$ ###.00")
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Textbox formato moneda

Publicado por Damian (6 intervenciones) el 21/07/2015 19:56:14
Gracias por tu ayuda, lo resolví de otra manera, se ve que se me despejó la mente y con algunas cosas que ayer no podría lo pude resolver, igualmente cambié y modifiqué el código entero. Dejo el ejemplo de lo que puse en cada textbox:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim s1$, t1#, s2$, t2#, s3$, t3#, s4$, t4#, s5$, t5#
Dim Resultado As Double
 
'Textbox1
If TextBox1 <> Empty Then
s1 = TextBox1.Text
s1 = Replace(s1, ".", ",")
On Error GoTo txt2
t1 = CDbl(s1)
TextBox1 = t1
TextBox1 = Format(TextBox1, "$ #,##0.00")
End If
 
txt2:
'Textbox2
If TextBox2 <> Empty Then
s2 = TextBox3.Text
s2 = Replace(s2, ".", ",")
On Error GoTo txt3
t2 = CDbl(s2)
TextBox2 = t2
TextBox2 = Format(TextBox2, "$ #,##0.00")
End If
 
txt3:
'Textbox3
If TextBox3 <> Empty Then
s3 = TextBox3.Text
s3 = Replace(s3, ".", ",")
On Error GoTo txt4:
t3 = CDbl(s3)
TextBox3 = t3
TextBox3 = Format(TextBox3, "$ #,##0.00")
End If
 
txt4:
'Textbox4
If TextBox4 <> Empty Then
s4 = TextBox4.Text
s4 = Replace(s4, ".", ",")
On Error GoTo txt5:
t4 = CDbl(s4)
TextBox4 = t4
TextBox4 = Format(TextBox4, "$ #,##0.00")
End If
 
txt5:
'Textbox5
If TextBox5 <> Empty Then
s5 = TextBox5.Text
s5 = Replace(s5, ".", ",")
On Error GoTo Resultado:
t5 = CDbl(s5)
TextBox5 = t5
TextBox5 = Format(TextBox5, "$ #,##0.00")
End If
 
'TextboxResultado
Resultado:
Resultado = t1 + t2 + t3 + t4 + t5
TextBox6 = Resultado
TextBox6 = Format(TextBox6, "$ 0.00")
End Sub

Gracias y saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Textbox formato moneda

Publicado por Damian (6 intervenciones) el 21/07/2015 20:13:39
Ahora el problema que se me presenta es que no puedo poner valores mayores de 1000!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar