Calcular ISR de clientes

Hola, buen día espero me puedan ayudar a resolver mi problema.
La cuestión es la siguiente:
Necesito calcular el ISR de clientes por lo que a a partir de una cantidad necesito que sea comparada con una tabla (limite superior) y de ahí sacar su impuesto y cuota fija para poder hacer los calculos; dejo el código que ya he escrito pero algo pasa en el ciclo "do-while-loop" por que no sigue comparando.
Sub stock()
'RUTINA PARA HACER EL CALCULO DE IMPUESTOS
'DECLARAMOS VARIABLES PARA CALCULOS
Dim importe As Double, inferior As Double, impuesto As Double
Dim cuota As Double, temp As Double
'DAMOS VALOR AL IMPORTE ANTES DE IMPUESTO
importe = Range("c5").Value
'VERIFICAMOS LOS RANGOS DE LA TABLA EN LA HOJA "TABLA IMPUESTOS
'CON UN BUCLE (do while-loop) PARA COMPARARLAS DENTRO DE LOS RANGOS
Sheets("TABLA_IMPUESTOS").Select
Range("a2").Select
temp = ActiveCell.Value
Do While temp > importe
'SI EL VALOR ESTA DEBAJO DEL RANGO ENTONCES DAMOS VALORES
'A LAS VARIABLES DE inferior E impuesto
If ActiveCell.Value < importe Then
ActiveCell.Offset(0, 1).Select
inferior = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
cuota = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
impuesto = ActiveCell.Value
End If
ActiveCell.Offset(1, 0).Select
Loop
'PONEMOS LOS VALORES DE LAS VARIABLES EN LAS CELDAS
Sheets("TEMPORAL").Select
Range("a1").Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = inferior
ActiveCell.Offset(0, 1).Value = impuesto
ActiveCell.Offset(0, 2).Value = cuota
ActiveCell.Offset(1, 0).Select
End Sub
También les dejo la tabla donde debe comparar el valor:
Limite superior limite inferior cuota fija %
496.07 0.01 0.00 0.0192
4,210.41 496.08 9.52 0.0640
7,399.42 4,210.42 247.23 0.1088
8,601.50 7,399.43 594.24 0.1600
10,298.35 8,601.51 786.55 0.1792
20,770.29 10,298.36 1,090.62 0.1994
32,736.83 20,770.30 3,178.30 0.2195
200,000.00 32,736.84 5,805.20 0.2800
De antemano muchas gracias.

1 Respuesta

Respuesta
1
Por lo que veo tu realizas el ciclo pero no descargas los valores, por lo tanto los valores van cambiando hasta que se completa el ciclo y se cumple la condición de que la variable temp es mayor que la variable importe y se para. Pero no has tomado los valores para pasarlos a las otras hojas porque los has dejado fuera del ciclo, además estas situándote en cada celda para tomar el valor por lo tanto al bajar una fila para que siga el ciclo no estas en la celda que pretendes, te explico:
Do While temp > importe
'SI EL VALOR ESTA DEBAJO DEL RANGO ENTONCES DAMOS VALORES
'A LAS VARIABLES DE inferior E impuesto

If ActiveCell.Value 1º.- Y pones en la macro:Si 496.07 es menor que importe, te desplazas a la derecha y das valor a la variable inferior (0.01) te desplazas a la derecha y das valor a cuota(0.00) te desplazas a la derecha y das valor a impuesto(0.0192) bajas una fila (y ahi esta el primer error, te encuentras en la celda correspondiente a impuesto y no a la de importe que según tu tabla deberías de estar en A3 (4,210.41) y te encuentras en (0.0640).2º.- Vas realizando el ciclo (aunque estuvieras bien situado) pero has dejado fuera del ciclo la descarga de variables al poner fuera del Loop las instrucciones para que realize la descarga:'PONEMOS LOS VALORES DE LAS VARIABLES EN LAS CELDAS
Sheets("TEMPORAL").Select
Range("a1").Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = inferior
ActiveCell.Offset(0, 1).Value = impuesto
ActiveCell.Offset(0, 2).Value = cuota
ActiveCell.Offset(1, 0). SelectEsto debe de estar dentro del ciclo antes de poner el Loop. Espero que te haya orientado para corregir tu macro.>Un saludo>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas