Como sumar varios textbox y mostrar el resultado en otro textbox

Tengo este formulario en excel,

Como ven el mismo tiene dos columnas una de débitos y otra de créditos cada uno de los campos abajo de cada columna es un textbox y en total hay 10 para débitos y 10 para créditos, y lo que deseo hacer es que al ingresar un valor en cada textbox (evento exit de cada control) el textbox que esta abajo del la label total débitos muestre la suma de los valores ingresados y así mismo para los crédito, además que el control de diferencia me muestre eso precisamente la diferencia entre total débitos y total créditos

El código que intente utilizar es el siguiente

Private Sub txtdebito1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(txtdebito1) Then
txtdebito1 = Format(Val(txtdebito1), "###,###,##0.00")
debito1 = txtdebito1.Value
debito2 = txtdebito2.Value
debito3 = txtdebito3.Value
debito4 = txtdebito4.Value
debito5 = txtdebito5.Value
debito6 = txtdebito6.Value
debito7 = txtdebito7.Value
debito8 = txtdebito8.Value
debito9 = txtdebito9.Value
debito10 = txtdebito10.Value
tot_debito = debito1 + debito2 + debito3 + debito4 + debito5 + debito6 + debito7 + debito8 + debito9 + debito10
txttotdebitos.Text = tot_debito
Else
MsgBox "Este campo requiere un valor numerico"
txtdebito1 = ""
txtdebito1.SetFocus
Cancel = True
End If

End Sub

sin embargo cuando ingreso valores en el primer campo me marca error en la linea

debito10=txtdebito10.Value

Y me muestra este error

"Se ha producido el error 13, no coinciden los tipos

La verdad no se cual es el error y en todo caso este código lo debería escribir en cada textbox

Respuesta
1

El problema es que primero le das formato y luego intentas sumarlo cuando debe ser al revés.

Además no necesitas pasar el dato del resto de los controles a las variables, solo el del control que se ha modificado.

Repite este código para cada control ajustando sus nombres.

Private Sub txtdebito1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(txtdebito1) Then
debito1 = cdbl(txtdebito1.Value)
txtdebito1 = Format(Val(txtdebito1), "###,###,##0.00")
tot_debito = debito1 + debito2 + debito3 + debito4 + debito5 + debito6 + debito7 + debito8 + debito9 + debito10
txttotdebitos.Text = tot_debito
Else
MsgBox "Este campo requiere un valor numerico"
txtdebito1 = ""
txtdebito1.SetFocus
Cancel = True
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas