Bir hücre değerini her güncelleştirdiğinizde Excel, çalışma kitabını yeniden hesaplamak için bir süreçten geçer. Doğrudan Excel içinde çalışırken, bunun zamanın %99,9'unda olmasını istersiniz (son derece büyük bir çalışma kitabıyla çalışıyorsanız istisna). Ancak bu, VBA kodunuzu gerçekten yavaşlatabilir. Makroların başında hesaplamalarınızı manuel olarak ayarlamak ve makroların sonunda hesaplamaları geri yüklemek iyi bir uygulamadır. Çalışma kitabını yeniden hesaplamanız gerekirse, Excel'e manuel olarak hesaplamasını söyleyebilirsiniz.
Otomatik Hesaplamaları Kapatın
Bir makro ile otomatik hesaplamayı xlmanual olarak ayarlayarak kapatabilirsiniz. Aşağıdaki VBA kodunu kullanın:
1 | Application.Calculation = xlManual |
Otomatik Hesaplamaları Tekrar Açın
xlAutomatic ayarıyla otomatik hesaplamayı tekrar açmak için:
1 | Uygulama.Hesaplama = xlOtomatik |
Prosedürünüzün en başında Otomatik hesaplamaları devre dışı bırakmanızı ve sonunda Otomatik Hesaplamaları yeniden etkinleştirmenizi öneririm. Bunun gibi görünecek:
Otomatik Hesaplamalar Makro Örneği Devre Dışı Bırak
12345678 | Alt Auto_Calcs_Örnek()Application.Calculation = xlManual'Bir şey yapUygulama.Hesaplama = xlOtomatikAlt Bitiş |
Manuel Hesaplama
Otomatik hesaplamalar devre dışı bırakıldığında, Hesaplamak Excel'i yeniden hesaplamaya zorlama komutu:
1 | Hesaplamak |
Excel'e yalnızca tek bir çalışma sayfasını yeniden hesaplamasını da söyleyebilirsiniz:
1 | Çalışma sayfaları("sayfa1").Hesapla |
Ayrıca VBA'ya yalnızca bir aralığı yeniden hesaplamasını söyleyebilirsiniz (VBA hesaplama yöntemleri hakkındaki makalemizi okumak için tıklayın)
Bunun bir makronun içinde nasıl görünebileceği aşağıda açıklanmıştır:
12345678910111213 | Alt Auto_Calcs_Example_Manual_Calc()Application.Calculation = xlManual'Bir şey yap'Yeniden hesaplaHesaplamak'Daha Fazla Şey YapınUygulama.Hesaplama = xlOtomatikAlt Bitiş |
VBA Ayarları - Hızlandırma Kodu
Amacınız kodunuzu hızlandırmaksa, şu diğer ayarları da yapmayı düşünmelisiniz:
Ekran güncellemesini devre dışı bırakmak, hızda büyük bir fark yaratabilir:
1 | Application.ScreenUpdating = Yanlış |
Durum Çubuğunu kapatmak da küçük bir fark yaratacaktır:
1 | Application.DisplayStatusBar = Yanlış |
Çalışma kitabınız olaylar içeriyorsa, prosedürlerinizin başlangıcında olayları da devre dışı bırakmalısınız (kodu hızlandırmak ve sonsuz döngüleri önlemek için!):
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). DisplayPageBreaks'i kapatmak için bu kod satırını kullanın:
1 | ActiveSheet.DisplayPageBreaks = Yanlış |