No se suman los valores en vba

En el siguiente comando asignado a un botón en visual basic no me suma los valores de las variables asignadas a txtofrenda y txtdiezmob en la variable subt1, sino que me concatena los dos valores ¿Cómo hago para que sumen y no que se concatenen?, de antemano gracias.

Private Sub CommandButton1_Click()

Dim ofrenda, diezmobruto, subt1, subt2, subt3, subt4, desc1, desc2, desc5, desc21, tdesc, diezmoneto As Double

ofrenda = txtofrenda.Text
diezmobruto = txtdiezmob.Text
subt1 = ofrenda + diezmobruto
desc21 = (subt1 * 21) / 100
subt2 = subt1 - desc21
desc5 = (subt2 * 5) / 100
subt3 = subt2 - desc5
desc1 = (subt3 * 1) / 100
subt4 = subt3 - desc1
desc2 = (subt4 * 2) / 100
tdesc = desc21 + desc5 + desc1 + desc2
diezmoneto = subt4 - desc2
Dim fila As Integer
fila = 1
While Cells(fila, 1) <> ""
fila = fila + 1
Wend
Cells(fila, 1) = txtfecha.Text
Cells(fila, 2) = txtndom.Text
Cells(fila, 3) = txtofrenda.Text
Cells(fila, 4) = txtdiezmob.Text
Cells(fila, 5) = subt1
Cells(fila, 6) = desc21
Cells(fila, 7) = subt2
Cells(fila, 8) = desc5
Cells(fila, 9) = subt3
Cells(fila, 10) = desc1
Cells(fila, 11) = subt4
Cells(fila, 12) = desc2
Cells(fila, 13) = tdesc
Cells(fila, 14) = diezmoneto
txtfecha = Empty
txtndom = Empty
txtofrenda = Empty
txtdiezmob = Empty
lblsubt = Empty

txtfecha.SetFocus
End Sub

1 respuesta

Respuesta
1

Hay 2 modos de lograrlo:

1- Declarando cada variable que intervenga en el cálculo como Double:

Dim ofrenda As Double, diezmobruto As Double, sub1 As Double

2- No declarar las variables (hoy ya casi no lo hacemos) y convertir el textbox en Double para tu caso.

Private Sub CommandButton1_Click()
ofrenda = CDbl(TextBox1.Text)
diezmobruto = CDbl(TextBox2.Text)
subt1 = ofrenda + diezmobruto
MsgBox subt1
End Sub

Si alguno de los textbox queda vacío dará error. Por lo tanto, si puede darse que dejen alguno de estos campos vacíos, debes contemplar el posible error de este modo para cada textbox:

Private Sub CommandButton1_Click()
If TextBox1 <> "" Then ofrenda = CDbl(TextBox1.Text)
If TextBox2 <> "" Then diezmobruto = CDbl(TextBox2.Text)
subt1 = ofrenda + diezmobruto
MsgBox subt1
End Sub

Ajusta el nombre de los controles para adaptarlos a tu modelo.

* Últimos días de promoción en manuales Excel

¡Gracias!  Excelente la explicación. Adicional a esto también noté que se puede agregar Val antes de la variable y esto también la convierte en double dando el mismo resultado, para mi caso así:

subt1 = Val(ofrenda) + Val(diezmobruto).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas