Iteraciones con Macros en Excel se hacen Lentas

Buen día expertos.
Mi inquietud surge debido a un programa que desarrolle para la empresa en la cual trabajo en donde tengo diferentes ordenes de producción (600-700) un una lista de excel. Cada una de ellas tiene diferentes items a considerar (Fechas, cantidades, ref...).
El programa sencillamente hace tantas iteraciones como órdenes existan, trayendo de cada orden los parámetros necesarios para mi programa de producción. La cuestión es que empieza muy bien, las primeras iteraciones las ejecuta a una velocidad que no se puede imaginar (Ni siquiera se ve el proceso que está haciendo) pero a medida que pasan las ordenes, este proceso se va haciendo cada vez más lento, hasta el punto en que es tannnn lento que uno puede ver que es lo que está haciendo.
Ayer lo ejecuté para 700 órdenes de producción y pasaron 25 minutos y no terminó. Al final de la orden 350 aprox. El proceso de búsquedas de valores, formulaciones, traídas de valores de otras hojas del mismo libro, sumas, restas etc etc etc... (procesos que se hacen para cada una de las órdenes) estaba extremadamente lento. Si lo hubiese dejado continuar, estoy seguro que hubieran podido pasar por lo menos 5 horas hasta que terminara.
¿A qué se debe este fenómeno? ¿Hay algo que pueda yo hacer para evitarlo?
De antemano muchas gracias por el tiempo y la atención.

1 Respuesta

Respuesta
1
Evidentemente estás llenando tu memoria ...
Revisá todo tu código teniendo en cuenta:
-No definir innecesariamente variables que quizás puedan ser compartidas por otras.
Por ej: Dim i as integer... y esa variable puede ser usada en todos los contadores o bucles del tipo:
For i = 1 to ....   y no necesitar 1 variable para cada bucle si luego ese valor ya no se usa.
-Si utilizas Set.... al finalizar su uso , agregá esta línea para liberarla
Set ..... = nothing
- Si utilizas Userforms, verificá que no te queden 'abiertos'. Muchas veces incluyen instrucciones como Me. Hide antes de mostrar otro UF, pero luego olvidan que solo lo ocultaron en lugar de cerrarlos.
Seguramente habrá + detalles que en este momento no se me ocurren, pero espero te sirvan estas ideas.
Gracias Elsa. Me fue de gran ayuda ya que estaba utilizando muchas variables que podía haber omitido. Realmente el proceso cambio del cielo a la tierra.
Muy agradecido

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas