Eğer Excel kullanarak bir program yaptıysanız (gerek makro ile gerek kodları yazarak) ve de üstüne verileriniz yüksekse haliyle Excel yavaş çalışacaktır. Aşağıda vereceğim kodlar nispeten programınızın daha rahat çalışmasını sağlayacaktır. Koşullu Biçimlendirme, Tablolar, Renklendirmeler, vb. gibi şeyleri tek tek anlatmıyorum bunları zaten internette araştırarak yapmışsınızdır. Konuya hakim olduğunuzu düşünerekten işlemleri kabaca anlatacağım. Bu kodları programınızın başına ve sonuna ekleyiniz.
Hangi işlemde yavaş çalışıyor ise giriş satırına yazılması gereken:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Son satırına yazılması gereken:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Örnek uygulanmış şekli:
Sub GuncelOlmayanlar()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For GuncellenecekVeri = 2 To GenelKategoriVeri
If "HAYIR" = Range("Veri!L" & GuncellenecekVeri).Value Then
GuncellenecekVerileriGetir = GuncellenecekVerileriGetir + 1
Range("Rapor!A" & GuncellenecekVerileriGetir).Value = GuncellenecekVerileriGetir - 1
Range("Rapor!B" & GuncellenecekVerileriGetir).Value = Range("Veri!F" & GuncellenecekVeri).Value
Range("Rapor!C" & GuncellenecekVerileriGetir).Value = Range("Veri!C" & GuncellenecekVeri).Value
Range("Rapor!D" & GuncellenecekVerileriGetir).Value = Range("Veri!D" & GuncellenecekVeri).Value
Range("Rapor!E" & GuncellenecekVerileriGetir).Value = Range("Veri!E" & GuncellenecekVeri).Value
Range("Rapor!F" & GuncellenecekVerileriGetir).Value = Range("Veri!J" & GuncellenecekVeri).Value
Range("Rapor!G" & GuncellenecekVerileriGetir).Value = Range("Veri!M" & GuncellenecekVeri).Value
Range("Rapor!Z" & GuncellenecekVerileriGetir).Value = Range("Veri!A" & GuncellenecekVeri).Value
End If
Next GuncellenecekVeri
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Peki bu kodlar ne işe yarıyor?
Application.ScreenUpdating = Kapatırsak ekran sabitmiş gibi kalıyor, yapılan işlemleri o an göremiyoruz. False komutu ile durdurup işlemler bittiğinde True komutu ile son halini görebiliyoruz.
Application.Calculation = Eğer bir formül varsa hesaplama işlemini anında yapıyor. xlCalculationManual komutu hesaplama işlemini bizim daha sonra kendi çalıştıracağımızı bildirir. Eğer kapatırsanız, yaptığınız formüllerin sonuçlarının değişmediğini göreceksiniz. Yani 2 ile 2 yi topladığınızda sonuç 4 vermesi gerekir normalde ama biz bu işlemi manuel yapacağımızı bildirdiğimiz için siz sayılara ne yazarsanız yazın sonuç hep 4 olacaktır. mesela 2 ile 3 topladığımızda 5 olması gerekirsen sistemde halen 4 gözükecektir. xlCalculationAutomatic komutu ise Excel'e her veri girişinde formül olsun olmasın hücreleri hesaplamaya çalışır. Varsayılanı da bu şekildedir.
Özetlersek:
Siz Excel'e her seferinde bir şeyler yazdığınızda Excel arkaplanda bir sürü işlem yapıyor. Programımız bize sonuç dönene kadar bu işlemleri geçici olarak kapatıp açıyoruz.
-----------------------------------------------------------------
Detaylı Etiketler: Excel yavaş çalışıyor, Excel makro kodları çok yavaş, Excel vb işlemleri kasıyor, Excel hızlandırma, Excel programını hızlandırma,