Excel - Macro muy lenta

 
Vista:

Macro muy lenta

Publicado por Indigo112 (1 intervención) el 09/08/2023 12:14:41
Muy buenas, tengo una macro muy sencilla que va muy lenta y no se por qué. Puede que sea porque son muchos datos y tengo graficas que lo realentizan pero me gustaría saber si lo puedo agilizar. También me gustaría añadir una barra de progreso para ver como va el cálculo. Muchas gracias.

Sub Optimizar()
Application.ScreenUpdating = False
'Application.Calculation = xlCalculationManual'
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False

Dim i As Integer

i = 4
For i = 4 To 204


Range("G" & i).Copy: Range("C9").PasteSpecial xlPasteValues

Range("B11").Copy: Range("H" & i).PasteSpecial xlPasteValues

Range("C11").Copy: Range("I" & i).PasteSpecial xlPasteValues

Next i

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
ActiveSheet.DisplayPageBreaks = True
Application.CutCopyMode = False

End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro muy lenta

Publicado por Antoni Masana (2478 intervenciones) el 09/08/2023 18:13:15
Como no lo puedo probar pregunto:

Y si en lugar de hacer esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Optimizar()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False
 
    Dim i As Integer
    i = 4
    For i = 4 To 204
	    Range("G" & i).Copy: Range("C9").PasteSpecial xlPasteValues
	    Range("B11").Copy: Range("H" & i).PasteSpecial xlPasteValues
	    Range("C11").Copy: Range("I" & i).PasteSpecial xlPasteValues
    Next i
 
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    ActiveSheet.DisplayPageBreaks = True
    Application.CutCopyMode = False
End Sub

Haces esto otro:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Optimizar()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False
 
	Range("G4:G204").Copy: Range("C9").PasteSpecial xlPasteValues
	Range("B11").Copy:     Range("H4:H204").PasteSpecial xlPasteValues
	Range("C11").Copy:     Range("I4:I204").PasteSpecial xlPasteValues
 
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    ActiveSheet.DisplayPageBreaks = True
    Application.CutCopyMode = False
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar