Bu eğitim size VBA'daki tüm farklı Hesaplama seçeneklerini öğretecektir.
Varsayılan olarak Excel, her çalışma kitabı değişikliği yapıldığında tüm açık çalışma kitaplarını hesaplar. Bunu, A1 hücresi değiştirilirse, A1 hücresine dayanan tüm hücreleri güncellediği bir hesaplama ağacını izleyerek yapar. Ancak bu, VBA kodunuzun çalışmasına neden olabilir. son derece yavaş, bir hücre her değiştiğinde olduğu gibi, Excel'in yeniden hesaplaması gerekir.
VBA hızınızı artırmak için, genellikle prosedürlerinizin başında otomatik hesaplamaları devre dışı bırakmak isteyeceksiniz:
1 | Application.Calculation = xlManual |
ve sonunda yeniden etkinleştirin:
1 | Uygulama.Hesaplama = xlOtomatik |
Ancak, çalışma kitaplarınızın tamamını (veya bir kısmını) prosedürünüz dahilinde hesaplamak isterseniz ne olur? Bu öğreticinin geri kalanı size ne yapacağınızı öğretecektir.
Şimdi Hesapla
Her şeyi yeniden hesaplamak için Hesapla komutunu kullanabilirsiniz (tüm açık çalışma kitaplarında):
1 | Hesaplamak |
Bu genellikle kullanılacak en iyi yöntemdir. Ancak, daha iyi hız için daha dar hesaplamalar da yapabilirsiniz.
Yalnızca Sayfayı Hesapla
Ayrıca VBA'ya yalnızca belirli bir sayfayı hesaplamasını söyleyebilirsiniz.
Bu kod aktif sayfayı yeniden hesaplayacaktır:
1 | ActiveSheet.Hesapla |
Bu kod, Sayfa1'i yeniden hesaplayacaktır:
1 | Sayfalar("Sayfa1").Hesapla |
Aralığı hesapla
Daha dar bir hesaplamaya ihtiyacınız varsa, VBA'ya yalnızca bir hücre aralığını hesaplamasını söyleyebilirsiniz:
1 | Sayfalar("Sayfa1").Range("a1:a10").Hesapla |
Bireysel Formülü Hesapla
Bu kod yalnızca tek bir hücre formülünü hesaplayacaktır:
1 | Aralık("a1").Hesapla |
Çalışma Kitabını Hesapla
Yalnızca bir çalışma kitabının tamamını hesaplamak için VBA seçeneği yoktur. Bir çalışma kitabının tamamını hesaplamanız gerekiyorsa, en iyi seçenek Hesapla komutunu kullanmaktır:
1 | Hesaplamak |
Bu, tüm açık çalışma kitaplarını hesaplayacaktır. Hız konusunda gerçekten endişeleniyorsanız ve bir çalışma kitabının tamamını hesaplamak istiyorsanız, aynı anda hangi çalışma kitaplarının açık olduğu konusunda daha seçici olabilirsiniz.
Hesaplama Çalışma Kitabı - Çalışmayan Yöntemler
VBA'yı yalnızca bir çalışma kitabını hesaplamaya zorlamak için kullanmak isteyebileceğiniz birkaç yöntem vardır, ancak bunların hiçbiri düzgün çalışmayacaktır.
Bu kod, çalışma kitabındaki her bir çalışma sayfasında dolaşacak ve sayfaları birer birer yeniden hesaplayacaktır:
1234567 | Alt Yeniden Hesapla_Çalışma Kitabı()Dim ws As Çalışma SayfasıÇalışma Sayfalarında Her ws içinws.HesaplaSonrakiAlt Bitiş |
Bu kod, tüm çalışma sayfalarınız "bağımsız" ise, yani sayfalarınızın hiçbiri diğer sayfalara atıfta bulunan hesaplamalar içermiyorsa iyi çalışır.
Ancak, çalışma sayfalarınız başka sayfalara atıfta bulunuyorsa, hesaplamalarınız doğru şekilde güncellenmeyebilir. Örneğin, Sayfa1'i Sayfa2'den önce hesaplarsanız, ancak Sayfa1'in formülleri Sayfa2'de yapılan hesaplamalara dayanıyorsa, formülleriniz en güncel değerleri içermeyecektir.
Ayrıca tüm sayfaları aynı anda seçip etkin sayfayı hesaplamayı da deneyebilirsiniz:
12 | ThisWorkbook.Sheets.SelectActiveSheet.Hesapla |
Ancak, bu aynı soruna neden olacaktır.