Estuve leyendo días atrás tu consulta anterior. Y debo decir que es muy difícil desarrollarte un 'formulario' ya que requiere no solo dibujar los controles, sino también asignarle propiedades, eventos o sea cuándo se va a ejecutar cada cálculo, etc.
En esta nueva solicitud, también hay muchos detalles. Espero te sirvan las imágenes para entender luego el código:
1. A medida que se ingresan los valores y % se puede ir mostrando ya los subtotales, como en la imagen siguiente:
![](//blob.todoexpertos.com/uploads/md/a682a028e6ba325dc0f7d6640287ea5b.png)
2. Para el iva debieras tener un control desplegable con las distintas opciones si ya las sabrás de antemano, por ej: 13 y 16 . O tener un control del tipo TextBox donde vayas a escribir el coeficiente. Yo opté por usar un combo y selecciono un coeficiente. El resultado se observa a continuación. O sea que si borro el iva o cambio su %, se recalcula.
![](//blob.todoexpertos.com/uploads/md/c4a3089c61120a13fd61fa7a9b955425.png)
3. Con la comisión pasa lo mismo que con el Iva. Si no se coloca queda como se ve hasta aquí, y al introducir un valor se agrega en el cuadro el importe correspondiente y actualiza el Total general.
![](//blob.todoexpertos.com/uploads/md/5d3b155d1b1d2c33c22b2383366c6470.png)
4. Por lo tanto, como mencioné en el punto 1, hay que colocar código para realizar los cálculos en cada uno de los campos que puedes modificar: cantidad, iva, comisión.
O, para no complicarte demasiado, podrías tener un botón para calcular cada vez que hagas algunos cambios, ya sea borrando el Iva, cambiando la cantidad o cambiando la comisión, calcular y ver qué resultados te devuelve.
Private Sub CommandButton1_Click()
'textbox2 = subtotal = cantidad * iva
TextBox2 = Format(Val(TextBox1) + Val(TextBox1) * (Val(ComboBox1.Value) / 100), "#,##0")
'textbox3 = coef.comisión, textbox4 = subtotal*coef.comisión
If TextBox3 = "" Then
TextBox4 = ""
Else
TextBox4 = CDbl(TextBox2) * ((TextBox3.Value) / 100)
End If
'textbox5 = Total = subtotal+comisi´n
If TextBox4 = "" Then
TextBox5 = Format(CDbl(TextBox2), "#,##0.00")
Else
TextBox5 = Format(CDbl(TextBox2) + CDbl(TextBox4), "#,##0.00")
End If
End Sub
Si necesitas el formulario de ejemplo, enviame un correo mencionando tu alias aquí. Mis correos aparecen en la sección Contactos de mi sitio.
http://aplicaexcel.com/contactos
Sdos.,
Elsa