Jump to content
KRUGERS

ANSWERED Cambiar veces que se ejecuta For...Next

Recommended Posts

Hola de nuevo a todos:

Tengo el Excel adjunto "INSERTAR FICHAJES FICTICIOS" y he hecho una macro para que inserte una fila con un fichaje ficticio según que en la celda correspondiente de la columna E aparezca el literal “SALIDA SIN ENTRADA” o “ENTRADA SIN SALIDA” y reemplace en la columna C el literal “Entrada” por el de “Salida” o viceversa, según corresponda.

Es necesario para que no figuren “picaduras” impares y posteriormente se realice correctamente la suma de horas.

En la macro he incluido un bucle For…Next en el que le indico que se ejecute desde la fila 4 (x=4) hasta la última fila con datos (variable uf). Se ejecuta perfectamente pero sólo hasta la última fila con datos que figura al iniciar el bucle (en este caso, la fila 910), pero como se van insertando filas cada vez que encuentra uno de los literales anteriores mencionado, debería seguir hasta el final, pero no lo consigo. Le he puesto en los condicionales if que están dentro del bucle For…Next un contador (uf=uf+1) para que incremente el valor de la variable uf cada vez que se inserte una fila nueva, y si al ejecutar la macro paso a paso con F8 ponemos el ratón sobre la variable uf al inicio del bucle For…Next que figura la variable incrementada, pero sigue sin avanzar la ejecución del bucle más allá del primer valor que tenía uf al principio (910).

He probado también incluir en el bucle For…Next un Do While ActiveCell.Value = Empty pero tampoco funciona.

¿Me podríais ayudar a cambiar las veces que se ejecuta el bucle For…Next una vez que se está ejecutando?

Muchas gracias a todos

INSERTAR FICHAJES FICTICIOS.xlsm

Share this post


Link to post
Share on other sites

Hola Antoni:

He probado la instrucción que has puesto y funciona, pero modificando algunas instrucciones:

For x = uf To 4 Step -1 ‘Pongo uf, porque coincide con la variable que tengo

-

He eliminado los contadores uf=uf+1 y x=x+1 que no hacían falta

-

Next

Ahora funciona perfecto. Gracias como siempre, maestro.

Podemos cerrar el tema.

Share this post


Link to post
Share on other sites

Aunque he cerrado el tema, sí que me gustaría saber si se puede cambiar las veces que se ejecuta un bucle For...Next una vez que ha comenzado su ejecución.

Gracias a todos.👍

Share this post


Link to post
Share on other sites

Modificando el valor de la variable del For, o sea, en el ejemplo For x =  1 To Hasta, podemos modificar la variable x dentro del bucle.

Elvalor de la variable Hasta se toma al iniciar el bucle.

Share this post


Link to post
Share on other sites

O sea, que por ejemplo, si ponemos

n=1000

For x=4 hasta n

¿una vez que se ejecuta, aunque vayamos incrementando el valor de la variable n en n+1 dentro del bucle este valor no va a variar ya que al principio la instrucción For tomó un valor inicial, en este caso 1000?

Share this post


Link to post
Share on other sites
Hace 27 minutos , KRUGERS dijo:

O sea, que por ejemplo, si ponemos

n=1000

For x=4 hasta n

¿una vez que se ejecuta, aunque vayamos incrementando el valor de la variable n en n+1 dentro del bucle este valor no va a variar ya que al principio la instrucción For tomó un valor inicial, en este caso 1000?

Efectivamente, para hacer lo que tu quieres utiliza un Do/Loop, por ejemplo:

x = 4
n = 1000
Do Until x = n
   If .... Then n = 1200
   x = x + 1	
loop

 

Edited by Antoni

Share this post


Link to post
Share on other sites

Creo que me ha quedado claro.

Veo que se pueden utilizar "trucos" como el que has mostrado de empezar por el final e incrementar la variable x en pasos negativos (step -1). Es cuestión de darle al coco, aunque a veces cuesta un poco y se agradece la ayuda externa.

Muchas gracias Antoni. Siempre se aprende de un experto.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy