Optimizar codigo

08/02/2006 - 17:17 por Rantamplan | Informe spam
Buenas grupo!
tengo un fragmento de codigo que copia el contenido de un rango de una
hoja en otro rango de otra hoja.
El codigo funciona sin problemas, pero tarda unos 3 minutos en ejecutarse
y el problema es que ese mismo fragmento de codigo lo tengo que repetir 3
veces mas! por lo que llega a estar en ejecución durante 15 minutos! no
se el codigo es el siguiente:

inicio copy&paste
Dim i As Long, j As Long
j = 61
'activamos la hoja
MEDIAS.Activate
'medias para HCL
For i = 3 To 482
MEDIAS.Cells(i, 3) = HCL.Cells(j, 3)
MEDIAS.Cells(i, 5) = HCL.Cells(j, 6)
MEDIAS.Cells(i, 7) = HCL.Cells(j, 9)
j = j + 60
Next i
fin copy&paste

me parece que un bucle del tipo For no es lo mas indicado para esta
operación, pero no se me ocurre otra forma de hacerlo, bueno si, copiando
los rangos directamente a saco, pero no se si seria muy buena idea
:-)

Salu2!.
 

Leer las respuestas

#1 jose
08/02/2006 - 17:51 | Informe spam
Genera una macro copiando y pegando el rango completo. Primero la columna 3,
despues la 5 y despues la 7. Ahi verás el código que necesitas.
Aún sin depurar, esto es tal como lo genera el generador, notarás una gran
mejoría.



"Rantamplan" escribió en el mensaje
news:
Buenas grupo!
tengo un fragmento de codigo que copia el contenido de un rango de una
hoja en otro rango de otra hoja.
El codigo funciona sin problemas, pero tarda unos 3 minutos en ejecutarse
y el problema es que ese mismo fragmento de codigo lo tengo que repetir 3
veces mas! por lo que llega a estar en ejecución durante 15 minutos! no
se el codigo es el siguiente:

inicio copy&paste
Dim i As Long, j As Long
j = 61
'activamos la hoja
MEDIAS.Activate
'medias para HCL
For i = 3 To 482
MEDIAS.Cells(i, 3) = HCL.Cells(j, 3)
MEDIAS.Cells(i, 5) = HCL.Cells(j, 6)
MEDIAS.Cells(i, 7) = HCL.Cells(j, 9)
j = j + 60
Next i
fin copy&paste

me parece que un bucle del tipo For no es lo mas indicado para esta
operación, pero no se me ocurre otra forma de hacerlo, bueno si, copiando
los rangos directamente a saco, pero no se si seria muy buena idea
:-)

Salu2!.

Preguntas similares