VBA makronuzun ekranı değiştirmesini izlemek ne kadar havalı görünse de, ScreenUpdating'i kapatırsanız (devre dışı bırakırsanız) Makronuzun daha hızlı çalışmasına yardımcı olabilirsiniz.
Ekran Güncellemeyi Devre Dışı Bırak
1. ScreenUpdating'i devre dışı bırakmak için, kodunuzun başına şu satırı koyun:
1 | Application.ScreenUpdating = Yanlış |
Ekran Güncellemeyi Etkinleştir
2. ScreenUpdating'i yeniden etkinleştirmek için, kodunuzun sonuna şu satırı yazın:
1 | Application.ScreenUpdating = Doğru |
VBA Ekran Güncelleme Örneği
Prosedürünüz daha sonra şöyle görünecektir:
1234567891011 | Alt ScreenUpdating_Example()Application.ScreenUpdating = Yanlış'Bir şey yapAralık("a1").Aralığı Kopyala("b1")Aralık("a2").Aralığı Kopyala("b2")Aralık("a3").Aralığı Kopyala("b3")Application.ScreenUpdating = DoğruAlt Bitiş |
Ekran Güncelleme Yenileme
ScreenUpdating'i devre dışı bırakmak, VBA kodunuzun ÇOK daha hızlı çalışmasını sağlar, ancak aynı zamanda çalışmanızın daha profesyonel görünmesini sağlar. Son kullanıcılar genellikle prosedürlerinizin perde arkasını görmek istemezler (özellikle prosedür yavaş çalıştığında). Ayrıca, son kullanıcıların sahne arkası işlevselliğini (ör. Gizli Çalışma Sayfaları) görmesini istemeyebilirsiniz. Neredeyse tüm prosedürlerinizde ScreenUpdating'i devre dışı bırakmanızı (ve yeniden etkinleştirmenizi) öneririm.
Ancak, ekranın yenilenmesini istediğiniz zamanlar vardır. Ekranı yenilemek için ScreenUpdating'i geçici olarak tekrar açmanız gerekecek (ekran "yenile" komutu yoktur):
123 | Application.ScreenUpdating = Doğru'Bir şey yapApplication.ScreenUpdating = Yanlış |
VBA Ayarları - Hızlandırma Kodu
Kod hızınızı artırmak için oynayabileceğiniz birkaç ayar daha vardır.
Otomatik Hesaplamaları devre dışı bırakmak, hızda BÜYÜK bir fark yaratabilir:
1 | Application.Calculation = xlManual |
Durum Çubuğunu devre dışı bırakmak da küçük bir fark yaratacaktır:
1 | Application.DisplayStatusBar = Yanlış |
Çalışma kitabınız olaylar içeriyorsa, genellikle işleminizin başında olayları devre dışı bırakmanız gerekir:
1 | Application.EnableEvents = Yanlış |
Son olarak, Excel sayfa sonlarını yeniden hesaplamaya çalıştığında VBA kodunuz yavaşlayabilir (Not: tüm prosedürler etkilenmeyecektir). Sayfa sonlarının görüntülenmesini devre dışı bırakmak için bu kod satırını kullanın:
1 | ActiveSheet.DisplayPageBreaks = Yanlış |