
Macro lenta
Publicado por Fernando (4 intervenciones) el 11/12/2023 15:13:32
Un saludo a todos.
Tengo una macro que su función es copiar los datos desde la columna F9010 en adelante hasta encontrar un vacío y pegarlos uno a uno en la columna B9897, cuando se cumple la condición la copia y pega en la primera celda vacía de la hoja1
Sub CopiarColumna()
Dim sh1 As Worksheet, sh2 As Worksheet
Dim i As Long, lc1 As Long, lc2 As Long, lr As Long
'
Application.ScreenUpdating = False
Set sh1 = Sheets("Hoja1")
Set sh2 = Sheets("Hoja2")
'
lc1 = 1
For i = 6 To sh2.Cells(9910, Columns.Count).End(1).Column
lr = sh2.Cells(Rows.Count, i).End(3).Row
sh2.Range(sh2.Cells(9910, i), sh2.Cells(lr, i)).Copy
sh2.Range("B9897").PasteSpecial xlPasteValues
If sh2.Range("B9896").Value > 15 Then
sh2.Range("B9894", sh2.Range("B" & Rows.Count).End(3)).Copy
sh1.Cells(1, lc1).PasteSpecial xlPasteValues
lc1 = lc1 + 1
End If
Next
Application.ScreenUpdating = False
Application.CutCopyMode = False
MsgBox "Fin"
End Sub
Cuando empecé con esta macro contaba con 1 columna de datos (B9850), 2 de referencias y 23 de formulas, hoy cuento con 18 columnas de datos mas sus referencias y 414 de formulas.
Para ver si alguien me ayuda a dejarlo en solo 23 de formulas he copiado todas las columnas de datos (B9850) en adelante a la XAA9910 en adelante para con la ayuda de una macro irlas copiando en la BN8950 una a una.
La F9910 es la que hace referencia por lo que seria primero copiar F9910 a B9897 luego copiar XAA9910 en adelante a BN8950 y repetir G9910 luego XAA9910 en adelante y así sucesivamente hasta encontrar un vacio desde su inicio en F9910.
Gracias de antemano.
Tengo una macro que su función es copiar los datos desde la columna F9010 en adelante hasta encontrar un vacío y pegarlos uno a uno en la columna B9897, cuando se cumple la condición la copia y pega en la primera celda vacía de la hoja1
Sub CopiarColumna()
Dim sh1 As Worksheet, sh2 As Worksheet
Dim i As Long, lc1 As Long, lc2 As Long, lr As Long
'
Application.ScreenUpdating = False
Set sh1 = Sheets("Hoja1")
Set sh2 = Sheets("Hoja2")
'
lc1 = 1
For i = 6 To sh2.Cells(9910, Columns.Count).End(1).Column
lr = sh2.Cells(Rows.Count, i).End(3).Row
sh2.Range(sh2.Cells(9910, i), sh2.Cells(lr, i)).Copy
sh2.Range("B9897").PasteSpecial xlPasteValues
If sh2.Range("B9896").Value > 15 Then
sh2.Range("B9894", sh2.Range("B" & Rows.Count).End(3)).Copy
sh1.Cells(1, lc1).PasteSpecial xlPasteValues
lc1 = lc1 + 1
End If
Next
Application.ScreenUpdating = False
Application.CutCopyMode = False
MsgBox "Fin"
End Sub
Cuando empecé con esta macro contaba con 1 columna de datos (B9850), 2 de referencias y 23 de formulas, hoy cuento con 18 columnas de datos mas sus referencias y 414 de formulas.
Para ver si alguien me ayuda a dejarlo en solo 23 de formulas he copiado todas las columnas de datos (B9850) en adelante a la XAA9910 en adelante para con la ayuda de una macro irlas copiando en la BN8950 una a una.
La F9910 es la que hace referencia por lo que seria primero copiar F9910 a B9897 luego copiar XAA9910 en adelante a BN8950 y repetir G9910 luego XAA9910 en adelante y así sucesivamente hasta encontrar un vacio desde su inicio en F9910.
Gracias de antemano.
Valora esta pregunta


0