Por que se ejecuta primero el inputbox ?

Tengo una macro que aquí transcribo, y ante mi ignorancia de vba, no entiendo por que se ejecuta el inputbox, sin haberse rellenado las celdas, con sus valores en los pasos 1º, 2º y 3º, que están secuencialmente delante.

Sub CONCEPTO14()
' LIQUIDACION INT. MORA FIJ.
Dim cantidad As Double
Dim cantidad2 As Double

Application.ScreenUpdating = False

'Se calcula la mora si la hay
Calculodelamora

'Paso 1º
ActiveCell.Offset(0, 10).Value = mora

ActiveCell.Offset(0, -1). Activate
TiposInteres

'Paso 2º
ActiveCell.Offset(0, 1). Activate
ActiveCell.Offset(0, 15).Value = InteresMora

' Paso 3º
PrincipalPendiente = ActiveCell.Offset(-1, 4).Value
Saldo = ActiveCell.Offset(-1, 5).Value
ActiveCell.Offset(0, 1).Value = "LIQUIDACION INT. MORA FIJ."

'El inputbox se ejecuta antes que se rellenen los valores de los pasos 1º, 2º y 3º
Do
cantidad = Val(InputBox("Ingresa cantidad correspondiente a la mora de la columna S", _
"Ingreso de Comisión por Mora Fija"))

Loop Until IsNumeric(cantidad)

ActiveCell.Offset(0, 2).Value = cantidad
ActiveCell.Offset(0, 26).Value = ""
ActiveCell.Offset(0, 27).Value = cantidad
ActiveCell.Offset(0, 28).Value = ""
ActiveCell.Offset(0, 29).Value = ""

'ActiveCell.Offset(0, 10).Value = (cantidad) * -1

ActiveCell.Offset(0, 4).Value = PrincipalPendiente
ActiveCell.Offset(0, 5).Value = Round(Saldo + cantidad, 2)
ActiveCell.Offset(1, -1).Select

End Sub

Yo necesitaría que antes de que el inputbox me haga la pregunta, la celda que está 10 columnas a la derecha de la celda activa, ya le apareciera el valor de la "mora".

A la espera de vuestra respuesta, le agradezco a todos expertos su esfuerzo y dedicación para que esta página funcione tan bien.

1 respuesta

Respuesta
1

Luego de esos procesos anteriores debieras refrescar la pantalla con esta instrucción:

Application.ScreenUpdating = True

Si esos 3 procesos anteriores no hacen cambio de pantalla (no se pasan a otras hojas) podrías intentar incluso no colocar al inicio esta línea en false.

Probalo y comentame.

Sdos!

PD) Te envié un correo que quedó en mi carpeta sin salir desde hace 1 semana... confirmame por favor si te llega el adjunto.

¡Gracias!

Elsa, efectivamente, en el momento que he quitado

Application.ScreenUpdating = False

La macro me ha funcionado como quería, por lo que estoy eternamente agradecido a su respuesta.

Aprovechando le paso otra pregunta, como podría conseguir no sacar una diferencia de 0,01 céntimo con respecto al cálculo que hace el Banco, en el cálculo de una cuota de interés. Por ejemplo al banco le da 435,03€ y a mi 435,02€, supongo lógicamente que es por el número de decimales con lo que se trabaja, yo con los que trabaja el banco no lo sé, pienso que sean 5 decimales, yo trabajo con 5 decimales y después redondeo (round) a 3, y tengo esas diferencias, sabría darme alguna explicación.

He recibido su correo con el PDF de las 500 macros, lo he abierto y está perfecto, muy agradecido, como siempre por su rapidez, su amabilidad y sus buenas contestaciones.

Saludos Raúl Muñoz

No es lo mismo 'redondear' que quitar decimales. A ver si me explico con las siguientes imágenes:

Tengo 2 celdas calculadas y otras 2 donde les aplico el redondeo.

Los resultados los pegué como valores en las col J:K para poder observar cómo guarda Excel los resultados, por ej en J5.

En la celda seleccionada se aprecia que se ven 3 decimales porque así se estableció desde el formato, pero Excel los conserva a todos y estos al sumar hacen la diferencia con respecto a los que se los redondea quitando los decimales excedentes. Así con cualquier cálculo.

Por lo tanto no le apliques el redondeo, solo deja el formato con la cantidad de decimales necesarios visualmente.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas