2008-09-27 8 views

Respuesta

14

yo uso tanto de las soluciones propuestas:

Application.ScreenUpdating = False 
Application.Calculation = xlCalculationManual 
... 
... 
... 
Application.Calculation = xlCalculationAutomatic 
Application.ScreenUpdating = True 
0

Puede desactivar el cálculo automático en el cuadro de diálogo de opciones, lo configura de modo que solo se calcule cuando presiona F9.

+0

mi macro sólo se ejecuta cuando yo haga, así que estoy bien en este aspecto, pero no quiero ver la copia del sobresalir en torno a los datos (según lo especificado por la macro), sólo se el resultado final – Oskar

2

Application.ScreenUpdating = False

Y, por supuesto, la puso de nuevo en true cuando haya terminado, incluso si se produce un error. Ejemplo:

Public Sub MyMacro 
    On Error GoTo ErrHandler 
    Application.ScreenUpdating = False 
    ... do my stuff that might raise an error 
    Application.ScreenUpdating = True 
    Exit Sub 
ErrHandler: 
    Application.ScreenUpdating = True 
    ... Do something with the error, e.g. MsgBox  
End Sub 
+0

¿cómo me aseguro de recuperarlo después de un error? – Oskar

+0

Agregué un ejemplo para mostrar esto. – Joe

1

Sobre la base de Joe y SEER (esto utiliza la sintaxis de edad por lo que es compatible con VBA de Office 2000):

On Error Goto AfterCalculation 
Application.ScreenUpdating = False 
Application.Calculation = xlCalculationManual 
... 

AfterCalculation: 
Application.Calculation = xlCalculationAutomatic 
Application.ScreenUpdating = True 
2

También prefiero usar las dos soluciones propuestas, , pero también mantener el modo de cálculo previo de los usuarios.

Para esta aplicación particular, esto podría ser que no es problema, pero por lo general las mejores prácticas para permitir que los usuarios tienen sus ajustes restaurados después de finalizar su procedimiento:

Application.ScreenUpdating = False 
PreviousCalcMode = Application.Calculation 
Application.Calculation = xlCalculationManual 
    ... 
    ... 
    ... 
Application.Calculation = PreviousCalcMode 
Application.ScreenUpdating = True 

NB. También valdría la pena su tiempo para insertar algún control de errores que active Application.ScreenUpdating si ocurriera un error en su brillante código;) Si la memoria no me falla, Excel no mostrará ningún mensaje de error cuando ScreenUpdating = false. Algo como esto:

Sub DoSomeThing 


On Error Goto DisplayError 

Application.ScreenUpdating = False 
PreviousCalcMode = Application.Calculation 
Application.Calculation = xlCalculationManual 
    ... 
    ... 
    ... 
Application.Calculation = PreviousCalcMode 
Application.ScreenUpdating = True 

Exit Sub 

DisplayError: 
Application.Calculation = PreviousCalcMode 
Application.ScreenUpdating = True 

MsgBox Err.Description 
End 'This stops execution of macro, in some macros this might not be what you want' 
    '(i.e you might want to close files etc)' 
End Sub 
Cuestiones relacionadas