Optimizar copia de celdas de datos desde una hoja a otra con Macro
Hola, que tal, soy nuevo en este foro, y estoy aprendiendo a usar macros. El asunto es que debo realizar copias de celdas desde una hoja a otra, uso ciclo for, pero al ejecutarlo se me demora mas de 3 minutos. Ando buscando la forma de que sea mas eficiente, lo cual el tiempo de ejecución sea lo mínimo posible. Coloco el siguiente código explicando su función:
For a = 5 To CantFilas
' copia el primer valor en la columna a de la hoja origen y lo copia en las siguientes celdas de abajo que encuentra en la fila pegándolos en la celdas de continuas de abajo en la hoja de destino
'si la columna A hay nada datos en la celda reserva el valor
If Sheets(HojaOrigen1).Cells(a, 1) <> "" Then
reservaOT = Sheets(HojaOrigen1).Cells(a, 1)
End If
'se va copiando los datos de la hoja origen a la otra
Sheets(HojaDestino).Cells(Asig, 3) = Sheets(HojaOrigen1).Cells(a, 1)
If Sheets(HojaOrigen1).Cells(a, 1) = "" Then
Sheets(HojaDestino).Cells(Asig, 3) = reservaOT
End If
If Sheets(HojaOrigen1).Cells(a, 5) = "" Then
Sheets(HojaDestino).Cells(Asig, 3) = Sheets(HojaOrigen1).Cells(a, 1)
End If
Asig=Asig+1
Next
Tengo de forma similar varias instrucciones de código, no se si habrá alguna forma mas eficiente de hacerlo, por ejemplo usando range o algo asi. En el caso de cuando son los datos estáticos a copiar, en el cual no hay condiciones de por medio uso esta Instrucción:
Sheets(HojaOrigen1).Select
Range("H5:H550").Select
Selection.Copy
Sheets(HojaDestino).Select
Range("J7:J550").Select
Selection.PasteSpecial
Al usar esta instrucción el código se ejecuta rapido, pero que pasa cuando hay que usar sentencias If, reservar variables o algún procedimiento de por medio? Será posible transformar mi código del for, el primero de arriba a una instrucción parecida al código de abajo, o escribirlo de otra forma que sea mas eficiente al copiar los datos?
Espero que me puedas ayudar, desde ya, gracias