Si en tu programa usas instrucciones del tipo .select, .activate, do while ... loop estas instrucciones hacen muy lentas las macros, y todavía se hacen más lentas si las fórmulas se actualizan atomaticamente, esto significa que cada que la macro se ejecute constantemente la hoja de excel estará recalculando la fórmula.}, otra forma de hacer mas rapidas y eficientes las macros es usar instrucciones como set xxx=range("x:x"). Currentregion, with ... end with, ciclos for i=... next for, for each ... next, declarar las variables para que ocupen menos memoria posible por ejemplo dim numero as integer ocupa 4 bytes de memoria mientras que dim numero as variant ocupa 24, yo uso estas instrucciones en programas de optimización de cortes de barras o para calcular los resultados de los juegos de azar que implican mucho tiempo de calculo por las fórmulas y obtengo los resultados en pocos segundos cosa que en una programación normal tardaría horas, te paso las siguientes instrucciones estas deben bajarle algo al tiempo
sub tu_macro
Apagar
Instrucciones de tu macro
Encender
end sub
Sub apagar()
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
ActiveSheet.DisplayPageBreaks = False
End Sub
Sub encender()
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
.CutCopyMode = False
End With
ActiveSheet.DisplayPageBreaks = False
End Sub