2008-09-27 17 views

cevap

14

Ben önerilen çözümlerin her ikisi kullanın:

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

Seçenekler diyaloğunda otomatik hesaplamayı kapatabilirsiniz, sadece F9 tuşuna bastığınızda hesaplayacağı şekilde ayarlar.

+0

benim makro yalnızca çalışır bunu yürütmek zaman bu yüzden bu konuda iyiyim, ama ben (makro tarafından belirtildiği şekilde) verilerine etrafında excel kopyalama izlemek istemiyoruz, sadece son sonuç – Oskar

2

Application.ScreenUpdating = Eğer bir hata ortaya çıkar bile tamamladığınızda

Ve tabii

tekrar True olarak ayarlayın Yanlış. Örnek:

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

Bir hatadan sonra geri aldığımdan nasıl emin olabilirim? – Oskar

+0

Bunu göstermek için bir örnek ekledim. – Joe

1

Joe ve kahin üzerine Bina (o Office 2000 VBA ile uyumlu olmasını sağlamak bu eski sözdizimi kullanır):

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

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

Ayrıca, önerilen çözümlerin her ikisini de kullanmayı tercih ediyorum, , fakat aynı zamanda kullanıcılara önceki hesaplama modunu da tutmayı tercih ediyorum. Bu Hiç önemli olabilir bu özel uygulama için

, ama genellikle kullanıcıların prosedür tamamlandıktan sonra onların ayarlar geri atalım en iyi yöntem:

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

NB. Ayrıca, aksi halde parlak kodunuzda bir hata oluşması durumunda Application.ScreenUpdating uygulamasını etkinleştiren bazı hata işlemlerini de eklemeniz yeterli olacaktır;) Bellek bana doğru hizmet veriyorsa, ScreenUpdating = false olduğunda Excel herhangi bir hata mesajı göstermeyecektir. Böyle şey:

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