Como puedo calcular automáticamente el porcentaje Bono y la Suma Total en text change de ambos

Nuevamente por aqui,

Alguien me podría ayudar con este calculo tengo un formulario donde quiero que al momento de ir ingresando el (Valor1 + Valor2 + %Bono) se vaya automatizando la suma total y que cuando ingrese en la caja de texto Bono que puede ser el 12% o 25% se calcule automáticamente también la caja de texto % Bono ya que en formula en excel seria así (Suma Total * Bono) y lo quiero trabajar con macros.

Así debería quedar como muestro en el formulario lo he intentado hacer pero tengo problemas con el tema de variables y decimales no me salen capaz algún tipo dato lo estaré haciendo mal.

Respuesta
1

Este es el resultado de la macro, pasa lo siguiente los números dentro de un textbox siempre serán texto y como tales no pueden hacer se operaciones con ellos, primero tienes que convertirlos a VAL, este es un ejemplo de como se hace, no incluí la forma para pasarlo a la hoja de calculo puesto que supongo que ya tienes cubierta esa parte y tu pregunta es sobre como hacer el calculoy esta es la macro

Private Sub CommandButton1_Click()
SUMA = Val(TextBox2.Text) + Val(TextBox3.Text)
PORCENTAJE = SUMA * TextBox4
TextBox5.Text = PORCENTAJE
TextBox6.Text = SUMA + PORCENTAJE
End Sub

1 respuesta más de otro experto

Respuesta
1

¿Qué parte es la que no sabes hacer? Ese porcentaje lo sacas así: Total * Parte / 100

En otras palabras: La suma de Valor1 y Valor2 * Bono / 100

¿O lo que no sabes es programarlo?

Ese símbolo de por ciento "%" en la caja de texto es un estorbo, vas a tener que manipular el Len del TextBox, y te recomiendo hacerlo en el evento Exit.

También tendrás que manipular otros eventos como el Enter, o codear mucho en el Exit porque si regresas el Focus a esa caja y vuelves a salir sin cambiar nada te da error.

Como programador, a la hora de diseñar un TextBox que haga una operación matemática pero requiera que visualmente se interprete que es un Porcentaje, prefiero poner un Label detrás, así:

No significa que sea imposible programarlo, solo que no es practico, observa: video demo

Eso cuesta unas cuantas validaciones que se pueden evitar con representar el % en un label aparte.

Así como lo esta mostrando en su demo así es experto ANDY MACHIN

Aquí tienes:

Private Sub TextBox3_Enter()
Me.TextBox3.Value = ""
End Sub
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim Val1 As Double
Dim Val2 As Double
Dim prcBono As Double
Dim sTotal As Double
Dim prcSum As Double
Dim prcCal As Double
If Me.TextBox1.Value = "" Then Val1 = 0 Else Val1 = Me.TextBox1.Value
If Me.TextBox2.Value = "" Then Val2 = 0 Else Val2 = Me.TextBox2.Value
If Me.TextBox4.Value = "" Then prcBono = 0 Else prcBono = Me.TextBox4.Value
If Me.TextBox3.Value = "" Then
    prcCal = 0
    sTotal = Val1 + Val2 + prcBono
    Me.TextBox5.Value = sTotal
Else
    Me.TextBox3.Value = Me.TextBox3.Value & "%"
    Select Case Len(Me.TextBox3.Value)
        Case 2
            prcCal = Left(Me.TextBox3.Value, 1)
        Case 3
            prcCal = Left(Me.TextBox3.Value, 2)
        Case 4
            prcCal = Left(Me.TextBox3.Value, 3)
    End Select
    prcSum = Val1 + Val2
    prcSum = prcSum * prcCal / 100
    Me.TextBox4.Value = prcSum
    sTotal = Val1 + Val2 + prcSum
    Me.TextBox5.Value = sTotal
End If
End Sub

Hay dos macros, la primera es corta, es el evento Enter del textbox que lo que hace es limpiarlo para evitar errores en el Exit

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas