Como crear un TEXTBOX calculadora automático

expert@s tengo este código en el textbox3 el cual quiero que al salir del textbox2 se actualice automáticamente con el resultado de la suma del valor dentro del textbox1 + textbox2. Asi como lo tengo realiza la suma pero como si los valores fueran textos. Intente cambiar boolean por integer pero queda peor. ¿Q tengo mal?

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox3.value = TextBox2.value + TextBox1.value
End Sub

3 Respuestas

Respuesta
1

Puedes probar esto:

TextBox3.Text = Val(TextBox2.Text) + Val(TextBox1.Text) 

o esto otro:

TextBox3 = CDbl(TextBox1) + CDbl(TextBox2) 

¡Gracias! Alberto Coronado 

Respuesta
1

En los textbox se almacenan los datos como texto, por eso los tienes que convertir a valor numérico, una forma sería con la función CDbl, por ejemplo:

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If IsNumeric(TextBox1.Value) Then t1 = CDbl(TextBox1.Value) Else t1 = 0
    If IsNumeric(TextBox2.Value) Then t2 = CDbl(TextBox2.Value) Else t2 = 0
    TextBox3.Value = t1 + t2
End Sub

Podrías complementarlo poniendo también el evento en el textbox1, quedaría así:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If IsNumeric(TextBox1.Value) Then t1 = CDbl(TextBox1.Value) Else t1 = 0
    If IsNumeric(TextBox2.Value) Then t2 = CDbl(TextBox2.Value) Else t2 = 0
    TextBox3.Value = t1 + t2
End Sub
'
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If IsNumeric(TextBox1.Value) Then t1 = CDbl(TextBox1.Value) Else t1 = 0
    If IsNumeric(TextBox2.Value) Then t2 = CDbl(TextBox2.Value) Else t2 = 0
    TextBox3.Value = t1 + t2
End Sub

También lo podrías simplificar de esta forma:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Call sumar
End Sub
'
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Call sumar
End Sub
'
Sub sumar()
    If IsNumeric(TextBox1.Value) Then t1 = CDbl(TextBox1.Value) Else t1 = 0
    If IsNumeric(TextBox2.Value) Then t2 = CDbl(TextBox2.Value) Else t2 = 0
    TextBox3.Value = t1 + t2
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

¡Gracias! Como siempre Dante Amor muy útil tu ayuda, mil gracias!

Dante Amor hay posilidad de habilitar este mismo subcomando en varios textbox al mismo tiempo? sin tener que copiar el código dentro de cada textbox. por ejemplo algo así;

Private Sub TextBox1,2,3,4,5,6,7............_Exit(ByVal Cancel As MSForms.ReturnBoolean)

No es así de simple, se tiene que crear una Clase. Revisa la siguiente respuesta e intenta adaptarla:

Validar mayúsculas en textbox vba.excel

Revise el post pero en ese caso los textbox estaban incrustados en la misma hoja, yo tengo los textbox en un formulario, aun no me queda claro como seria el código para la clase en ese caso. Disculpa aun soy novata con vba.

Respuesta
1

Este ejemplo tal vez ayude, los textbox realizan cálculos al actualizar la cantidad facturada

https://youtu.be/0UuR_zRQCB4

https://youtu.be/smL4A-aRjCM

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas