Problema al sumar dos TextBox

Tengo problemas al sumar dos TextBox y que la suma de estos se me refleje en un tercer TextBox, ya formate los textbox para que interprete valores numéricos, el caso es que el formulario lo tengo diseñado para que cuando se digite el código aparezcan en otros textbox los datos referentes a este código además hay un ComboBox que tiene precargada una lista, en el caso que el código exista y el ComboBox especifique un concepto en el TextBox Vl_Cancela muestra el valor que corresponde a ese código y ese concepto, además hay otro TextBox en donde se ingresa un valor manual y las suma de estos debe reflejarse en otro TextBox, ya tengo un código para este procedimiento pero solamente me reconoce el valor que ingreso manualmente, a continuación dejo el código que tengo para que me puedan explicar el porque no me realiza la operación de suma los Textbox tienen los siguientes nombres:

TextBox1 = Vl_Cancela (valor cargado mediante codigo NO INGRESADO MANUAL)

TextBox2 = Vl_Otros (valor ingresado MANUALMENTE)

TextBox3 = Tot_Cancela

La operacion que quiero realice es Tot_Cancela = Vl_Cancela + Vl_Otros

este es el codigo que estoy usando

Private Sub Tot_Cancela_BeforeUpdate(ByVal cancel As MSForms.ReturnBoolean)
Tot_Cancela = Format(Val(Tot_Cancela), "###,###,##0.00")
End Sub

Private Sub Vl_Cancela_BeforeUpdate(ByVal cancel As MSForms.ReturnBoolean)
Vl_Cancela = Format(Val(Vl_Cancela), "###,###,##0.00")
End Sub

Private Sub Vl_Canela_Exit(ByVal cancel As MSForms.ReturnBoolean)
valor = Me.Vl_Cancela.Value
Me.Tot_Cancela.Text = Format(valor + otros, "#,#0.00")
End Sub

Private Sub Vl_Otros_BeforeUpdate(ByVal cancel As MSForms.ReturnBoolean)
Vl_Otros = Format(Val(Vl_Otros), "###,###,##0.00")
End Sub

Private Sub Vl_Otros_Exit(ByVal cancel As MSForms.ReturnBoolean)
otros = Me.Vl_Otros.Value
Me.Tot_Cancela.Text = Format(valor + otros, "#,#0.00")
End Sub

2 respuestas

Respuesta
1

Encuentro varios detalles a revisar:

- Es correcto lo que menciona Antares: si vas a trabajar con decimales utiliza Cdbl sino Val...

- Pero ese detalle no debiera impedir la suma así que siguiendo con la revisión encontré que tenés un nombre mal escrito:

Private Sub Vl_Canela_Exit(ByVal cancel As MSForms.ReturnBoolean)
valor = Me.Vl_Cancela.Value 

- Las variables 'valor' y 'otros' deben estar declaradas al inicio del código para este formulario.

- El evento Exit solo se ejecuta si el control recibe el foco y luego lo quitas con un enter o enviando el foco a otro control. Quizás eso no pase con este textbox... revisa.

PD) Salvo que necesites hacer mención a controles de diferentes formularios no es necesario el uso de Me.

Hola Elsa

Hice las revisiones que me recomendaste pero sigo sin poder obtener el resultado, las variables "Valor" y "Otros" están declaradas al inicio del formulario y son del tipo double, ¿si la suma se debe ejecutar inmediatamente se ingrese valor en el primer TextBox que evento debo utilizar en el Textbox3 para que me muestre la suma de los dos anteriores?

Actualmente en el TextBox3 que es donde quiero que aparezca el resultado de la suma solo me refleja el valor que ingreso en el Textbox2 y no se si es porque el valor del Textbox1 esta vinculado con un ComboBox es decir si yo eleijo una opción en ese ComboBox el código que tengo busca el valor en la hoja1 y de acuerdo a la opción del ComboBox muestra ese valor en el Textbox1, ¿me pregunto si el hecho de que no se digita este valor sino que es llamado de esta hoja1 afecte el proceso de la suma?

Espero puedas ayudarme y si es necesario te puedo enviar el archivo para que lo revises

Mil gracias

En lugar del evento Click de ese control, agregá una línea al código del combobox. Luego de mostrar el valor en al textbox Vl_Cancela, le agregaría :

valor = Vl_Cancela.Value
Tot_Cancela.Text = Format(valor + otros, "#,#0.00")

Incluso aquí mismo podrías colocar la instrucción de formato y así te evitas las 2 macros del control Vl_Cancela:

Vl_Cancela = Format(Val(Vl_Cancela), "###,###,##0.00")

Sdos!

Respuesta
1

En vez de usar la función Val, sustitúyela por Cdbl.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas