Soru CKS Programı Kaydetme Sorunu

Tasarım

Altın Üye
Katılım
3 Şubat 2005
Mesajlar
273
Excel Vers. ve Dili
Microsoft Excel 2013 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
16-11-2025
Kod:
Arkadaşlar merhaba, ben resmi bir kurumda çalışmaktayım. Çiftçi kayıt sistemi ile ilgili bir program yazdım, ekran görüntüsünü
aşağıya ekliyorum.
Benim sorunum programa arka arka 15-20 kayıt girildikten sonra Excel sayfasına geçtiğimiz an fare imleci meşgul duruma geliyor
ve kayıtları öyle yapıyor.
Bu arada herhangi bir elektrik kesintisinde falan olduğunda kayıtlar yapılmamış oluyor ve dosya numaraları karışıyor.
Benim isteğim her kayıt sonrası bilgisayarın RAM'inin boşaltılması, bunu nasıl çözebilirim?
Bu konuda bilgili arkadaşlardan yardım talep ediyorum.




Private Sub cmdKaydet_Click()
Sheets("CKS").Select
Columns("A:A").Select
Selection.Find("", ActiveCell).Activate
ActiveCell.Offset(0, 0).Select
ActiveCell.Offset(0, 0) = FrmKayit.txtDosyaNo.Value
ActiveCell.Offset(0, 1) = FrmKayit.txtTeslimTarihi.Value
ActiveCell.Offset(0, 2) = FrmKayit.txtTCKimlikNo.Text
ActiveCell.Offset(0, 3) = FrmKayit.txtAdi.Text
ActiveCell.Offset(0, 4) = FrmKayit.txtBaba.Text
ActiveCell.Offset(0, 5) = FrmKayit.txtDogum.Text
ActiveCell.Offset(0, 6) = FrmKayit.txtTelefon.Text
ActiveCell.Offset(0, 7) = FrmKayit.txtKoyu.Text
ActiveCell.Offset(0, 8) = FrmKayit.cmbDilekceTipi.Text
ActiveCell.Offset(0, 9) = [kullanici] & " - " & Now
Columns("A:J").EntireColumn.AutoFit
MsgBox "{" & FrmKayit.txtAdi.Text & "} isimli çiftçi kaydı başarıyla tamamlandı...", vbInformation, "Kaydedildi..."
ActiveWorkbook.Save
If FrmKayit.cmbDilekceTipi.ListIndex = "Fark Ödemesi (Hububat)" Then: FrmDestek.Show
If FrmKayit.cmbDilekceTipi.ListIndex = "Fark Ödemesi Yağlı Tohumlar" Then: FrmDestek.Show
Unload Me
FrmMesaj.Show
End Sub
 

Ekli dosyalar

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
671
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Bu tür sorunlar genellikle VBA kodlarının yoğun şekilde çalıştığı ve bellek yönetimi ile ilgili sıkıntılar yaşandığı durumlarda ortaya çıkar. Programın her kaydı kaydettikten sonra belleği serbest bırakmak ve işlem hızını artırmak için bazı optimizasyonlar yapılabilir.

Private Sub cmdKaydet_Click()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

On Error GoTo Cleanup

Sheets("CKS").Select
Columns("A:A").Select
Selection.Find("", ActiveCell).Activate
ActiveCell.Offset(0, 0).Select
ActiveCell.Offset(0, 0) = FrmKayit.txtDosyaNo.Value
ActiveCell.Offset(0, 1) = FrmKayit.txtTeslimTarihi.Value
ActiveCell.Offset(0, 2) = FrmKayit.txtTCKimlikNo.Text
ActiveCell.Offset(0, 3) = FrmKayit.txtAdi.Text
ActiveCell.Offset(0, 4) = FrmKayit.txtBaba.Text
ActiveCell.Offset(0, 5) = FrmKayit.txtDogum.Text
ActiveCell.Offset(0, 6) = FrmKayit.txtTelefon.Text
ActiveCell.Offset(0, 7) = FrmKayit.txtKoyu.Text
ActiveCell.Offset(0, 8) = FrmKayit.cmbDilekceTipi.Text
ActiveCell.Offset(0, 9) = [kullanici] & " - " & Now
Columns("A:J").EntireColumn.AutoFit

MsgBox "{" & FrmKayit.txtAdi.Text & "} isimli çiftçi kaydı başarıyla tamamlandı...", vbInformation, "Kaydedildi..."
ActiveWorkbook.Save

If FrmKayit.cmbDilekceTipi.ListIndex = "Fark Ödemesi (Hububat)" Then: FrmDestek.Show
If FrmKayit.cmbDilekceTipi.ListIndex = "Fark Ödemesi Yağlı Tohumlar" Then: FrmDestek.Show

Cleanup:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Unload Me
FrmMesaj.Show
End Sub
 

Tasarım

Altın Üye
Katılım
3 Şubat 2005
Mesajlar
273
Excel Vers. ve Dili
Microsoft Excel 2013 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
16-11-2025
Bu tür sorunlar genellikle VBA kodlarının yoğun şekilde çalıştığı ve bellek yönetimi ile ilgili sıkıntılar yaşandığı durumlarda ortaya çıkar. Programın her kaydı kaydettikten sonra belleği serbest bırakmak ve işlem hızını artırmak için bazı optimizasyonlar yapılabilir.

Private Sub cmdKaydet_Click()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

On Error GoTo Cleanup

Sheets("CKS").Select
Columns("A:A").Select
Selection.Find("", ActiveCell).Activate
ActiveCell.Offset(0, 0).Select
ActiveCell.Offset(0, 0) = FrmKayit.txtDosyaNo.Value
ActiveCell.Offset(0, 1) = FrmKayit.txtTeslimTarihi.Value
ActiveCell.Offset(0, 2) = FrmKayit.txtTCKimlikNo.Text
ActiveCell.Offset(0, 3) = FrmKayit.txtAdi.Text
ActiveCell.Offset(0, 4) = FrmKayit.txtBaba.Text
ActiveCell.Offset(0, 5) = FrmKayit.txtDogum.Text
ActiveCell.Offset(0, 6) = FrmKayit.txtTelefon.Text
ActiveCell.Offset(0, 7) = FrmKayit.txtKoyu.Text
ActiveCell.Offset(0, 8) = FrmKayit.cmbDilekceTipi.Text
ActiveCell.Offset(0, 9) = [kullanici] & " - " & Now
Columns("A:J").EntireColumn.AutoFit

MsgBox "{" & FrmKayit.txtAdi.Text & "} isimli çiftçi kaydı başarıyla tamamlandı...", vbInformation, "Kaydedildi..."
ActiveWorkbook.Save

If FrmKayit.cmbDilekceTipi.ListIndex = "Fark Ödemesi (Hububat)" Then: FrmDestek.Show
If FrmKayit.cmbDilekceTipi.ListIndex = "Fark Ödemesi Yağlı Tohumlar" Then: FrmDestek.Show

Cleanup:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Unload Me
FrmMesaj.Show
End Sub
Yardımın için teşekkür ederim hocam, hemen deniyorum. :)
 

Tasarım

Altın Üye
Katılım
3 Şubat 2005
Mesajlar
273
Excel Vers. ve Dili
Microsoft Excel 2013 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
16-11-2025
Az önce 8-10 adet arka arkaya kayıt girdim şimdilik bir sorun gözükmüyor. Yardımınız için çok teşekkür ederim. Selametle kalın :)
 

Tasarım

Altın Üye
Katılım
3 Şubat 2005
Mesajlar
273
Excel Vers. ve Dili
Microsoft Excel 2013 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
16-11-2025
Bu tür sorunlar genellikle VBA kodlarının yoğun şekilde çalıştığı ve bellek yönetimi ile ilgili sıkıntılar yaşandığı durumlarda ortaya çıkar. Programın her kaydı kaydettikten sonra belleği serbest bırakmak ve işlem hızını artırmak için bazı optimizasyonlar yapılabilir.

Private Sub cmdKaydet_Click()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

On Error GoTo Cleanup

Sheets("CKS").Select
Columns("A:A").Select
Selection.Find("", ActiveCell).Activate
ActiveCell.Offset(0, 0).Select
ActiveCell.Offset(0, 0) = FrmKayit.txtDosyaNo.Value
ActiveCell.Offset(0, 1) = FrmKayit.txtTeslimTarihi.Value
ActiveCell.Offset(0, 2) = FrmKayit.txtTCKimlikNo.Text
ActiveCell.Offset(0, 3) = FrmKayit.txtAdi.Text
ActiveCell.Offset(0, 4) = FrmKayit.txtBaba.Text
ActiveCell.Offset(0, 5) = FrmKayit.txtDogum.Text
ActiveCell.Offset(0, 6) = FrmKayit.txtTelefon.Text
ActiveCell.Offset(0, 7) = FrmKayit.txtKoyu.Text
ActiveCell.Offset(0, 8) = FrmKayit.cmbDilekceTipi.Text
ActiveCell.Offset(0, 9) = [kullanici] & " - " & Now
Columns("A:J").EntireColumn.AutoFit

MsgBox "{" & FrmKayit.txtAdi.Text & "} isimli çiftçi kaydı başarıyla tamamlandı...", vbInformation, "Kaydedildi..."
ActiveWorkbook.Save

If FrmKayit.cmbDilekceTipi.ListIndex = "Fark Ödemesi (Hububat)" Then: FrmDestek.Show
If FrmKayit.cmbDilekceTipi.ListIndex = "Fark Ödemesi Yağlı Tohumlar" Then: FrmDestek.Show

Cleanup:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Unload Me
FrmMesaj.Show
End Sub
Öğle arası maalesef yine aynı hatayı yaptı. Kayıt yapan arkadaş son 10 kaydın gözükmediğini söyledi. @Korhan Ayhan hocam bu konuda sizin görüşleriniz nedir?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,554
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

On Error GoTo Cleanup satırı hata durumunda dosyayı kaydetmeden işleme devam ediyor.

ActiveWorkbook.Save bu satırı Cleanup: satırının hemen altına ekleyip deneyebilirsiniz. Böylece kod hata versede dosyayı en son haliyle kayıt edecektir. Veri kaybının önüne bu şekilde geçebilirsiniz diye düşünüyorum. En azından denemekten zarar gelmez.
 

Tasarım

Altın Üye
Katılım
3 Şubat 2005
Mesajlar
273
Excel Vers. ve Dili
Microsoft Excel 2013 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
16-11-2025
Merhaba,

On Error GoTo Cleanup satırı hata durumunda dosyayı kaydetmeden işleme devam ediyor.

ActiveWorkbook.Save bu satırı Cleanup: satırının hemen altına ekleyip deneyebilirsiniz. Böylece kod hata versede dosyayı en son haliyle kayıt edecektir. Veri kaybının önüne bu şekilde geçebilirsiniz diye düşünüyorum. En azından denemekten zarar gelmez.
Yaptım hocam bir de böyle deneyelim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,554
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu arada her kayıt işleminde dosyayı kaydetmek veri sayısı arttıkça performans kaybına yol açacaktır.

Bunun yerine dosyayı kapatırken kullanıcı onayı ile kayıt etmek daha sağlıklı olabilir. Hem sistem yorulmamış olur.
 

Tasarım

Altın Üye
Katılım
3 Şubat 2005
Mesajlar
273
Excel Vers. ve Dili
Microsoft Excel 2013 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
16-11-2025
Bu arada her kayıt işleminde dosyayı kaydetmek veri sayısı arttıkça performans kaybına yol açacaktır.

Bunun yerine dosyayı kapatırken kullanıcı onayı ile kayıt etmek daha sağlıklı olabilir. Hem sistem yorulmamış olur.
Şuan onu da yaptım hocam, çarpıdan kapatırken kullanıcıya sormadan kaydediyor.
 

Tasarım

Altın Üye
Katılım
3 Şubat 2005
Mesajlar
273
Excel Vers. ve Dili
Microsoft Excel 2013 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
16-11-2025
Bu arada her kayıt işleminde dosyayı kaydetmek veri sayısı arttıkça performans kaybına yol açacaktır.

Bunun yerine dosyayı kapatırken kullanıcı onayı ile kayıt etmek daha sağlıklı olabilir. Hem sistem yorulmamış olur.
@Korhan Ayhan hocam durumu ben size biraz daha açıklayayım: Kullandığımız bilgisayarlar kısıtlı, yani her kullanıcı kendi oturumunu kendi şifresiyle açıp giriyor bu nedenle programı sadece bilgisayarın "D" diskine koyabiliyoruz. İsteyen kendi masaüstüne kısayol oluşturup oradan kullanıyor. Bilgisayarda 128GB SSD ve 1TB'lik Harddisk var, ben SSD'de kullanılan programın harddiske yazmakta sorun yaşadığını düşünüyorum. Çünkü aynı programı ben kendi bilgisayarıma alıp, C üzerinde kullandığım zaman herhangi bir sorun görmedim. Artık iyiden iyiye gına geldi arkadaşlar yine sorun oldu diye diken üzerindeyim. :)
 
Üst