Makroğum, sayıları büyük olan bir elektronik tabloyu güncelleştirir, ancak sonuç, sonuç hesaplandığında excel'i oluşturduğundan çok yavaş çalışır. Makro tamamlanıncaya kadar çıktıyı oluşturmanın excel'ini nasıl durdurabilirim?Makro, makro hesaplarken Excel'in elektronik tabloyu oluşturmasını nasıl engellerim?
cevap
Ben önerilen çözümlerin her ikisi kullanın:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
...
...
...
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Seçenekler diyaloğunda otomatik hesaplamayı kapatabilirsiniz, sadece F9 tuşuna bastığınızda hesaplayacağı şekilde ayarlar.
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
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
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
- 1. makro bağımlı makro
- 2. Makro içinde makro içinde C
- 3. jinja2: Makro makro veya dinamik makro çağrıları seçiliyor
- 4. elisp makro?
- 5. Makro Değişkeninin SAS Makro İçindeki Değişen Değeri
- 6. Java ile bir Excel elektronik tablosuna makro ekleme
- 7. Preprocessor makro nasıl oluşturulur?
- 8. Makro (basit) nasıl yazılır?
- 9. VBA Makro
- 10. Makro GAS
- 11. "Dene!" Makro
- 12. SAS makro değişken değişimi
- 13. Clojure'da nasıl "defn" makro yazabilirim?
- 14. #include yönergesinde makro nasıl kullanılır?
- 15. Excel Makro Kaydetmek için
- 16. Makro değerinin tanımlanması
- 17. Scala bulunamadı: değeri makro
- 18. Doxygen: "KULLANILMAYAN" makro
- 19. SAS makro ben yardım seçeneği ile bir makro oluşturmak çalışıyorum
- 20. WinRT tanımak için makro?
- 21. Etkin çalışma, makro yürütme
- 22. Visual Studio makro hatalarını
- 23. makro - bir klasör
- 24. Makro genişletmeyi engelleme
- 25. Excel makro çalışır
- 26. Zor boo sözdizimi makro
- 27. Koşullu makro genişletme
- 28. Makro değişkem neden çözümlenmiyor?
- 29. Makro içinde SAS libname
- 30. yineleme Değişkin Makro Argümanlar
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