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

¿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

1 respuesta más de otro experto

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas