Sumar con decimales en TextBox (Excel 2013)

Dentro de un Formulario tengo varios textbox, los cuáles pueden tener o no valores.

El hecho es que mediante un CheckBox, decido si los sumo o no al Total. Para ello utilizo un código en cada CheckBox que funciona muy bien si en cada TextBox le pongo "Val", pero si lo cambio por "Cdbl" el error es que "no coinciden los tipos".

Hice algunos cambios, pero no logro hacerlo funcionar. Si algún Experto puede ayudarme, agradezco desde ya su tiempo!

Aquí el código:

Private Sub CheckBox1_Click()

If CheckBox1.Value = False Then
TextBox84 = CDbl(TextBox84) - CDbl(TextBox14)
Label23 = "La Venta Total es de: $ " & CDbl(TextBox84) + CDbl(TextBox85)
Else
TextBox84 = CDbl(TextBox84) + CDbl(TextBox14)
Label23 = "La Venta Total es de: $ " & CDbl(TextBox84) + CDbl(TextBox85)
End If
End Sub

2 respuestas

Respuesta
1

Es que yo lo dejaría con la función Val, y si querés que queden con dos decimales, sería algo más o menos así:

Private Sub CheckBox1_Click()
Dim monto As Double
If CheckBox1.Value = False Then
TextBox84 = Val(TextBox84) - Val(TextBox14)
monto = Val(TextBox84) + Val(TextBox85)
Else
TextBox84 = Val(TextBox84) + Val(TextBox14)
monto = Val(TextBox84) + Val(TextBox85)
End If
Label23 = "La Venta Total es de: $ " & Format(monto, "#,##0.00")
End Sub

Gracias por tu tiempo, Gustavo. Con tu aporte, sólo se agregan dos decimales con valor cero en el Label23. Continúo con otras variantes que encuentre, se me ocurran o me ofrecen hasta lograrlo, pero hasta el momento no lo logré.

A ver con lo siguiente, porque se me ocurre que el problema es el valor de la variable "monto"

Private Sub CheckBox1_Click()
Dim monto As Double
If CheckBox1.Value = False Then
 monto = Val(TextBox84) - Val(TextBox14) + Val(TextBox85)
Else
 monto = Val(TextBox84) + Val(TextBox14) + Val(TextBox85)
End If
Label23 = "La Venta Total es de: $ " & Format(monto, "#,##0.00")
End Sub

¡Gracias, Gustavo! Con tu aporte y el de Elsa pude encontrar el camino a una solución a mi problema.

La cuestión era pasarlo a variables y otros detalles más que se relacionan al resto del código.

Te envío un saludo...

Carlos

Me alegro que te haya servido, a mi en particular más que darte la solución directamente me gusta "mostrar el camino" y que seas tú directamente quien encuentra la solución (creo que puede ser más lento el camino, pero estoy seguro que aprenderás mucho más).

Respuesta
1

Si no te resulta con VAL, podes utilizar esta opción:

Private Sub CheckBox1_Click()'definir variables Double para cada txtDim txt84 As Double, txt14 As Double, txt85 As Double'si los textbox tienen datos pasarlos a las variablesIf TextBox84 <> "" Then txt84 = CDbl(TextBox84.Value)If TextBox14 <> "" Then txt14 = CDbl(TextBox14.Value)If TextBox85 <> "" Then txt85 = CDbl(TextBox85.Value)'operaciónIf CheckBox1.Value = False Then    txt84 = txt84 - txt14    Label23 = "La Venta Total es de: $ " & txt84 + txt85Else    txt84 = txt84 + txt14    Label23 = "La Venta Total es de: $ " & txt84 + txt85End IfEnd Sub

Sdos!

Gracias, Elsa por ayuda y tu tiempo. Luego de actualizar el código, lo único que no funciona es el textbox84, no se actualiza. Queda con el mismo valor.

Estuve haciendo varias pruebas pero no logro que funcione bien.

Hay alguna otra sugerencia?

Gracias otra vez.

Carlos

Quizás tengas alguna otra rutina que afecte al textbox84.

Porque las instrucciones al hacer clic en el check son bien claras: toman su valor +- el del otro control... revisa por favor todo lo relacionado con ese nro de control (utiliza el buscador para mayor seguridad).

Si no lo encontrás enviame tu libro al correo que aparece en mi sitio (o dejame un correo tuyo aquí).

¡Gracias, Elsa! Es cierto, pude solucionar el conflicto con otras líneas de código para que funcione. Te agradezco una vez más por el tiempo y esfuerzo en tu respuesta.

Saludos.

Carlos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas