Hola, necesito compatibilizar mi macro de excel 2003 al 2007

Hola, tengo un problema ya que en un ordenador tiene excel 2003 y al abrirlo en uno 2007 se ve muy lento el excel, no se como arreglarlo, esta es mi macro, de ante mano muchas gracias, que estés muy bien

Sub COPIAR_MES_A_MES_SEC()
Sheets("Macro").Select
filas = Array(19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 50, 53, 57, 60, 62, 66, 71, 75, 81, 88, 92, 103, 123, 133, 135, 142, 145, 147, 158, 161, 164, 177, 185, 190, 194, 200, 207, 211, 214)
For i = LBound(filas) To UBound(filas)
col1 = Range("K1").Column
col3 = Range("BK1").Column
col5 = Range("DK1").Column
For j = 1 To 6
Cells(filas(i), col1).Copy Sheets("producción").Cells(filas(i), col1)
Cells(filas(i), col3).Copy Sheets("producción").Cells(filas(i), col3)
Cells(filas(i), col5).Copy Sheets("producción").Cells(filas(i), col5)
col1 = col1 + 4
col3 = col3 + 4
col5 = col5 + 4
Next
col1 = Range("AK1").Column
col3 = Range("CK1").Column
col5 = Range("EK1").Column
For j = 1 To 6
Cells(filas(i), col1).Copy Sheets("producción").Cells(filas(i), col1)
Cells(filas(i), col3).Copy Sheets("producción").Cells(filas(i), col3)
Cells(filas(i), col5).Copy Sheets("producción").Cells(filas(i), col5)
col1 = col1 + 4
col3 = col3 + 4
col5 = col5 + 4
Next
Next
End Sub

1 respuesta

Respuesta
1

Lo único que se me ocurre es que juntes estos 2 ciclos en uno solo

col1 = Range("K1").Column
col3 = Range("BK1").Column
col5 = Range("DK1").Column
For j = 1 To 6
Cells(filas(i), col1).Copy Sheets("producción").Cells(filas(i), col1)
Cells(filas(i), col3).Copy Sheets("producción").Cells(filas(i), col3)
Cells(filas(i), col5).Copy Sheets("producción").Cells(filas(i), col5)
col1 = col1 + 4
col3 = col3 + 4
col5 = col5 + 4
Next
col1 = Range("AK1").Column
col3 = Range("CK1").Column
col5 = Range("EK1").Column
For j = 1 To 6
Cells(filas(i), col1).Copy Sheets("producción").Cells(filas(i), col1)
Cells(filas(i), col3).Copy Sheets("producción").Cells(filas(i), col3)
Cells(filas(i), col5).Copy Sheets("producción").Cells(filas(i), col5)
col1 = col1 + 4
col3 = col3 + 4
col5 = col5 + 4
Next

Por ejemplo:

col1 = Range("K1").Column
col3 = Range("BK1").Column
col5 = Range("DK1").Column
col2= Range("AK1").Column
col4 = Range("CK1").Column
col5 = Range("EK1").Column
For j = 1 To 6
Cells(filas(i), col1). Copy Sheets("producción"). Cells(filas(i), col1)
Cells(filas(i), col3). Copy Sheets("producción"). Cells(filas(i), col3)
Cells(filas(i), col5). Copy Sheets("producción"). Cells(filas(i), col5)
Cells(filas(i), col2). Copy Sheets("producción"). Cells(filas(i), col2)
Cells(filas(i), col4). Copy Sheets("producción"). Cells(filas(i), col4)
Cells(filas(i), col6). Copy Sheets("producción"). Cells(filas(i), col6)
col1 = col1 + 4
col3 = col3 + 4
col5 = col5 + 4
col2 = col2 + 4
col4 = col4 + 4
col6 = col6 + 4
Next

Así tendrás 6 cilcos en lugar de 12

Prueba y me comentas

Saludos. Dam

Muchas gracias necesito una ultima cosa, disculpa las molestias como puedo hacer para que pegue como pegado especial solo valores??? te lo agradeceria mucho tu ayuda, muchas gracias

Una consulta esta macro usa pegado especial solo valores????

lo de que puso lento ya lo arregle es por que ejecuto la macro hecha en 2003 y para arreglarla tengo que hacerla en el 2007, gracias y una aclaración, al usar esta macro se usa pegado especial valores?????, muchas gracias por todo

Sub COPIAR_MES_A_MES_SEC()
Sheets("Macro").Select
filas = Array(19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 50, 53, 57, 60, 62, 66, 71, 75, 81, 88, 92, 103, 123, 133, 135, 142, 145, 147, 158, 161, 164, 177, 185, 190, 194, 200, 207, 211, 214)
For i = LBound(filas) To UBound(filas)
col1 = Range("K1").Column
col3 = Range("BK1").Column
col5 = Range("DK1").Column
For j = 1 To 6
Sheets("producción").Cells(filas(i), col1) = Cells(filas(i), col1)
Sheets("producción").Cells(filas(i), col3) = Cells(filas(i), col3)
Sheets("producción").Cells(filas(i), col5) = Cells(filas(i), col5)
col1 = col1 + 4
col3 = col3 + 4
col5 = col5 + 4
Next
col1 = Range("AK1").Column
col3 = Range("CK1").Column
col5 = Range("EK1").Column
For j = 1 To 6
Sheets("producción").Cells(filas(i), col1) = Cells(filas(i), col1)
Sheets("producción").Cells(filas(i), col3) = Cells(filas(i), col3)
Sheets("producción").Cells(filas(i), col5) = Cells(filas(i), col5)
col1 = col1 + 4
col3 = col3 + 4
col5 = col5 + 4
Next
Next
End Sub

Con esta instrucción copias todo (valores, formatos, fórmulas, etc)

Cells(filas(i), col1). Copy Sheets("producción"). Cells(filas(i), col1)

Y con esta instrucción solamente valores.

Sheets("producción").Cells(filas(i), col1) = Cells(filas(i), col1)

Saludos. Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas