Çalışma kitabım çok yavaş çalışıyor

Katılım
14 Kasım 2017
Mesajlar
618
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
07-01-2024
Arkadaşlar Excel 2010 hata vermesi üzerine excel 2016 yükledim çok yavaş çalışıyor. Dosya boyutumda çok büyük. Acaba bu sorun versiyonla mı alakalı dosya boyutuyla mı yazmdığım formül yada kodlarla mı alakalı yada başka bir şeyden mi kaynaklanıyor. Rica etsem bakabilir misiniz ?

Sorunlar : Üst menüdeki makrolara tıkladığımda sayfalar geç açılıyor.
Hücre birleştirmede yada birleştirilmiş hücreleri çözme işlemi bile uzun sürüyor.
Özellikle Ay adı yazan sayfalardaki ileri geri butonlara tıklandığında makro geç çalışıyor.
Yani kısacası yapılan her eylemi geç algılıyor. Ok tuşlarıyla hücrelerde sağa sola yukarı aşağı yaparken bile gecikme oluyor.

Dosya boyutu büyük olduğu için ekleyemedim link paylaşıyorum.

https://www.dosyaupload.com/616o
 
Katılım
14 Kasım 2017
Mesajlar
618
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
07-01-2024
Ustalar buna bir bakabilir misiniz sorun neyse ona göre bir çözüm bulayım lütfen.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Neredeyse her sayfanın kod bölümünde şöyle bir kod var.
Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode = False Then
    Application.Calculate
End If
End Sub
Application.Calculate satırı bütün formülleri yeniden hesapla demektir.

Bu kodlar sayfa her aktif olduğunda tüm formülleri yeniden hesaplayacak şekilde kodlanmış.
Sayfa açılırken kaynaklanan yavaşlama bundan kaynaklanıyor.

Dosyanızda formüller otomatik çalışıyorsa bu kodları silerseniz yavaşlama sorunu giderilmiş olur.
 
Katılım
14 Kasım 2017
Mesajlar
618
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
07-01-2024
Hocam bir de Ocak Şubat gibi ay ismi olan sayfalarda çok fazla koşullu biçimlendirme var. Bu da yavaşlamaya sebep midir ?
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Evet bunlar da her değişimde yeniden biçimlendirmek için hesaplandığından yavaşlama olur.
 
Katılım
14 Kasım 2017
Mesajlar
618
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
07-01-2024
İlgilendiğin için çok teşekkür ederim hocam
 

Cengiz Demir

Altın Üye
Katılım
29 Haziran 2018
Mesajlar
605
Excel Vers. ve Dili
Office 365 TR (32 Bit)
Altın Üyelik Bitiş Tarihi
05-04-2025
Az önce bilgisayarımda kontrol ettim. Aşırı olmasa da biraz yavaşlama hissettim. (Ofis 365 )
Bilgisayar donanımınız düşükse, o da yavaş çalışmasına neden olur.

Ayrıca, aylar sayfalarınızdaki formu ve dolayısıyla menüyü de her gün için ayrı oluşturmuşsunuz. Bu da ek bir yük getirir.
O formu bir tane yapıp, veritabanı mantığıyla (veri kayıt ve geri çağırma) çalışması sağlanırsa; dosyanın yükü epey azalmış olur.
Form sayfanızdan bir tane ayarlayacaksınız;
Orda ayı belirliyeceksiniz. Verilerinizi girdikten sonra kaydete basacaksınız, ilgili ayın aşağıdakine benzer hazırladığınız tablosuna, veriler makro ile kaydedilecek.
Görüntüleme yapacağınız zaman, aynı form sayfasından, sayfaya eklediğiniz görüntüle seçeneğini işaretleyip, ilgili ayı belirleyeceksiniz.
İleri geri tuşları ile o aydaki günleri görüntüleyeceksiniz. (İlgili ayın gününe ait satırdaki veriler forma makro ile işlenecek.)

 
Katılım
14 Kasım 2017
Mesajlar
618
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
07-01-2024
Dediğiniz deneyeceğim hocam çok mantıklı.
 
Katılım
14 Kasım 2017
Mesajlar
618
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
07-01-2024
Az önce bilgisayarımda kontrol ettim. Aşırı olmasa da biraz yavaşlama hissettim. (Ofis 365 )
Bilgisayar donanımınız düşükse, o da yavaş çalışmasına neden olur.

Ayrıca, aylar sayfalarınızdaki formu ve dolayısıyla menüyü de her gün için ayrı oluşturmuşsunuz. Bu da ek bir yük getirir.
O formu bir tane yapıp, veritabanı mantığıyla (veri kayıt ve geri çağırma) çalışması sağlanırsa; dosyanın yükü epey azalmış olur.
Form sayfanızdan bir tane ayarlayacaksınız;
Orda ayı belirliyeceksiniz. Verilerinizi girdikten sonra kaydete basacaksınız, ilgili ayın aşağıdakine benzer hazırladığınız tablosuna, veriler makro ile kaydedilecek.
Görüntüleme yapacağınız zaman, aynı form sayfasından, sayfaya eklediğiniz görüntüle seçeneğini işaretleyip, ilgili ayı belirleyeceksiniz.
İleri geri tuşları ile o aydaki günleri görüntüleyeceksiniz. (İlgili ayın gününe ait satırdaki veriler forma makro ile işlenecek.)

Hocam bu konuyla ilgili bilgim sıfır. Veritabanı konusunu sıfırdan öğrenmem için bana kaynak gösterebilir misiniz ? Yada video linki.
 

Cengiz Demir

Altın Üye
Katılım
29 Haziran 2018
Mesajlar
605
Excel Vers. ve Dili
Office 365 TR (32 Bit)
Altın Üyelik Bitiş Tarihi
05-04-2025
Hocam bu konuyla ilgili bilgim sıfır. Veritabanı konusunu sıfırdan öğrenmem için bana kaynak gösterebilir misiniz ? Yada video linki.
Excel üzerinde çalışma yapacağınız için
Herhangi bir kaynak yada video var mıdır bilmiyorum ?

Kabaca yapılacak işlemleri anlatayım.

Öncelikle veri olarak kullanılacak tüm alanlar için değişkenleri belirleyin.
Örneğin Şantiye adı için SntA, Şantiye Sorumlusu için SntS vb..
Bu değişkenlerini tiplerini Dim ile belirleyin. Dim SntA, SantM as String ' Metin tipi , Dim Trh As Date 'Tarih tipi. vb..
Global Gun As Integer 'Global olarak gün değişkeni tanımlayın. (İleri ve Geri makrolarında ortak kullanmak için)

Farklı değişken tiplerini araştırmak için İnternette VBA değişken tipleri diye arama yapabilirsiniz.

Kayıt ve Görüntüleme için seçim düğmeleri oluşturun. Kayıt seçildiğinde kaydet düğmesi görünür olsun.
Görüntüleme seçince ileri geri tuşları aktif olsun vb..

Veri isimli sayfa oluşturun. Yukarıdaki örnekte verdiğim gibi başlıkları oluşturun. İsterseniz o başlıklara değişkenlerin isimlerini de yazabilirsiniz.

Kayıt İşlemlerini test ederken tüm verileri doldurun. Test verilerini 1,2,3,4,5...... olarak yazarsanız. Veri sayfasına doğru işlenip işlenmediğini daha kolay test edebilirsiniz.

Kayıt:
Ay ile ilgili hücreyi belirleyin. Örn. D7 Ay= Range("D7")
Ay adına göre Veri sayfasında ilgili ayın satırına konumlanacak şekilde kodları hazırlayın Select Case işlemini araştırın.
( Ocak olursa veri başlangıç satırı x , Şubat olursa veri başlangıç satırı y olacak.)

Select Case Ay
Case Ocak ASat= 1
Case Şubat ASat= 32
Case Mart ASat= 64
.......................
.......................
End Select


Cells yada Range ile İlgili hücrelerdeki verileri değişkenlere atayın.
SntA= Range(D10)
SntS= Range(I10)
.........
.........

Değişkenlerin içine ilgili hücredeki veriler çekildikten sonra bunları Veri sayfasındaki ilgili yerlere yazdırın.
Tarih değişkeninden ayın gününü bulun ve ASat değişkenine ilave edin. (İlgili ayın ilgili satırına verileri yazdırmak için)
ASat=ASat +Day(Trh).

Sheets("Veri").Cells(ASat,1).Value=SntA ' Örn. Ay Ocak ve Gün 5 ise 6. satıra o günkü rapora ait şantiye adını yazar.
Sheets("Veri").Cells(ASat,2).Value=SntS
...........
...........
Kayıt işlemi yapılmış olacak.

Görüntüle :

Görüntüle seçiliyse. Ay ismi yazılan hücrede değişiklik yapıldığında Veri sayfasındaki ilgili ayın ilk gününün verilerini forma yazdıracak makroyu yazın.

Sub Goruntule
Gun=1
Select Case Ay
Case Ocak ASat= 1
Case Şubat ASat= 32
Case Mart ASat= 64
.......................
.......................
End Select
ASat=ASat +1

Range("D10")=Sheets("Veri").Cells(ASat,1).Value
Range("I10")=Sheets("Veri").Cells(ASat,2).Value
.........
.........
End Sub


İleri düğmesine atanacak makroyu yazın.

Sub ileri
Select Case Ay
Case Ocak ASat= 1
Case Şubat ASat= 32
Case Mart ASat= 64
.......................
.......................
End Select

İf Gun=32 then Gun=31 ' Gün 32 olursa 31 olarak değiştir.

ASat=ASat+Gun

Range("D10")=Sheets("Veri").Cells(ASat,1).Value ' Şantiye Adı
Range("I10")=Sheets("Veri").Cells(ASat,2).Value ' Şantiye Sorumlusu
.......
.......
.......

Gun= Gun+1

End Sub


Geri düğmesine atanacak makroyu yazın.

Sub Geri
Select Case Ay
Case Ocak ASat= 1
Case Şubat ASat= 32
Case Mart ASat= 64
.......................
.......................
End Select

İf Gun=0 then Gun=1 ' Gün 0 olursa 1 olarak değiştir.

ASat=ASat+Gun

Range("D10")=Sheets("Veri").Cells(ASat,1).Value ' Şantiye Adı
Range("I10")=Sheets("Veri").Cells(ASat,2).Value ' Şantiye Sorumlusu
.......
.......
.......

Gun= Gun+1

End Sub
 
Katılım
14 Kasım 2017
Mesajlar
618
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
07-01-2024
Hocam eline emeğine sağlık çok zahmet vermişim hakkını helal et. Her şeyi anladım inşallah yapmaya çalışacağım. Kafama takılan tek bir şey var. Formdaki her hücre için ayrı ayrı değişken mi tanımlayacağım. Formda kullanılan yaklaşık 300 tane hücre var.
 

Cengiz Demir

Altın Üye
Katılım
29 Haziran 2018
Mesajlar
605
Excel Vers. ve Dili
Office 365 TR (32 Bit)
Altın Üyelik Bitiş Tarihi
05-04-2025
Hocam eline emeğine sağlık çok zahmet vermişim hakkını helal et. Her şeyi anladım inşallah yapmaya çalışacağım. Kafama takılan tek bir şey var. Formdaki her hücre için ayrı ayrı değişken mi tanımlayacağım. Formda kullanılan yaklaşık 300 tane hücre var.
Hakkım varsa Helal olsun. Sizde hakkınızı helal edin. :)

Değişken tanımlamasanız da olacak gibi.

Global Gun As Integer i tanımlayın. Diğerlerini tanımlamasanız da olur. Direkt hücrelerle eşleştirebilirsiniz.

Kayıt işlemleri örneğini, direkt hücrelerden veri alacak şekilde değiştirdim.

Ufak bir hatırlatma: Görüntüle makrosunu, sadece görüntüle düğmesi seçiliyken çalışacak şekilde ayarlayın.

Formun sayfa kodu alanına aşağıdaki makroyu yapıştırın.


Private Sub Worksheet_Change(ByVal Target As Range)
x = Target.Row ' Aktif hücrenin satır nosunu alıyoruz
y = Target.Column 'Aktif hücrenin sutun nosunu alıyoruz

if x=7 and y=4 and OptionButton1.value=true then call goruntule '7. satır 4. sütün daki hücrede Ay adını yazdığımız D7 de değişiklik olduysa ve görüntüle seçenek düğmesi seçiliyse goruntule makrosunu çalıştırıyor.

End Sub



Kayıt:
Ay ile ilgili hücreyi belirleyin. Örn. D7 Ay= Range("D7")
Ay adına göre Veri sayfasında ilgili ayın satırına konumlanacak şekilde kodları hazırlayın Select Case işlemini araştırın.
( Ocak olursa veri başlangıç satırı x , Şubat olursa veri başlangıç satırı y olacak.)

Select Case Ay
Case Ocak ASat= 1
Case Şubat ASat= 32
Case Mart ASat= 64
.......................
.......................
End Select

Tarih hücresinden ayın gününü bulun ve ASat değişkenine ilave edin. (İlgili ayın ilgili satırına verileri yazdırmak için)
ASat=ASat +Day(Range("U10").

Sheets("Veri").Cells(ASat,1).Value=Range(D10) ' Örn. Ay Ocak ve Gün 5 ise 6. satıra o günkü rapora ait şantiye adını yazar.
Sheets("Veri").Cells(ASat,2).Value=Range(I10)
...........
...........
Makroyu bu şekilde düzenlediğinizde kayıt işlemi yapılmış olacak..
 
Üst