Como operar con dos decimales en VBA excel

Tengo el siguiente código en diez TextBox

    Dim SIGPAC As Single
    Dim N_SIGPAC As Single
    Dim T_SIGPAC As Single
    SIGPAC = CDbl(Tarifas.Label14)
    N_SIGPAC = CDbl(TextBox5.Text)
    T_SIGPAC = SIGPAC * N_SIGPAC
    TextBox15.Text = T_SIGPAC

En cada TextBox, me sale el resultado o bien en enteros, o bien con un decimal.
Luego, tengo otro TextBox, que me suma el resultado de los diez citados anteriormente. Sin embargo, aquí solo me sale el resultado en enteros, sin decimal alguno, ni siquiera uno.
El código empleado es el siguiente

    Dim T15 As Single
    Dim T16 As Single
    Dim T17 As Single
    Dim T18 As Single
    Dim T19 As Single
    Dim T20 As Single
    Dim T21 As Single
    Dim T22 As Single
    Dim T23 As Single
    Dim T24 As Single
    Dim T_25 As Single
    T15 = Val(TextBox15.Text)
    T16 = Val(TextBox16.Text)
    T17 = Val(TextBox17.Text)
    T18 = Val(TextBox18.Text)
    T19 = Val(TextBox19.Text)
    T20 = Val(TextBox20.Text)
    T21 = Val(TextBox21.Text)
    T22 = Val(TextBox22.Text)
    T23 = Val(TextBox23.Text)
    T24 = Val(TextBox24.Text)
    T_25 = T15 + T16 + T17 + T18 + T19 + T20 + T21 + T22 + T23 + T24
    TextBox25.Text = T_25

Mis conocimientos, como se puede apreciar en la programación, son mínimos

2 respuestas

Respuesta
2

Pues después de mucho buscas, encontré la solución

Aquí está la programación que luego adapté a mi trabajo, muchas gracias

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
Respuesta
1
TextBox25.Text = Format(T_25, "#0.00")

¡Gracias! Por la respuesta
Pero te aseguro que no era tan sencillo, había probado una gran variedad de formatos individuales por TextBox, pero no funcionaban, quizás por la configuración regional del punto y la coma

Con la función que pegué en mi autorespuesta pongo la solución

Un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas