Makro İşleme Hızı ( Kasa, Satış )

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
671
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Kod:
Private Sub CommandButton6_Click()
Application.ScreenUpdating = False
 
 
 Sheets("Kasa_Case").Unprotect Password:="1453"
 sonsat1 = Sheets("Kasa_Case").[a65536].End(3).Row + 1
  
        If ComboBox1.Value = "" Or TextBox10.Value = "" Or TextBox12.Value = "" Then
            MsgBox "Zorunlu Alanları Doldurmadınız", vbExclamation
            Cancel = False
            Exit Sub
        ElseIf ComboBox1.Value <> "" And Left(ComboBox1.Value, 8) = "Veresiye" And TextBox14.Value = "" Then
            MsgBox "Veresiye İşlemi için Ünvan Seçmelisiniz", vbExclamation
            Cancel = False
            Exit Sub
        ElseIf ComboBox1.Value <> "" And Left(ComboBox1.Value, 4) = "Alış" And TextBox14.Value = "" And TextBox16.Value = "" Then
            MsgBox "Ünvan ve Tarih Bilgisi Giriniz", vbExclamation
            Cancel = False
            Exit Sub
        ElseIf ComboBox1.Value <> "" And Left(ComboBox1.Value, 4) = "Teda" And TextBox14.Value = "" And TextBox16.Value = "" Then
            MsgBox "Ünvan ve Tarih Bilgisi Giriniz", vbExclamation
            Cancel = False
            Exit Sub
        End If
                
        
            
     For i = 1 To sonsat1
        If ComboBox1.Value = "Nakit Satış (+)" Then
            With Sheets("Kasa_Case")
                .Cells(sonsat1, "A") = ComboBox1.Value
                .Cells(sonsat1, "B") = ""
                .Cells(sonsat1, "C") = TextBox10.Value
                .Cells(sonsat1, "D") = ""
                .Cells(sonsat1, "E") = CDate(TextBox2)
                .Cells(sonsat1, "F") = Format(Now, "dd.mm.yyyy - hh:mm:ss")
                If TextBox11 <> "" Then
                .Cells(sonsat1, "G") = TextBox11.Value
                Else
                .Cells(sonsat1, "G") = 0
                End If
                .Cells(sonsat1, "H") = Format(TextBox12, "0.00") * 1
                .Cells(sonsat1, "K") = ""
            End With
         ElseIf ComboBox1.Value = "Veresiye Satış (+)" Then
            With Sheets("Kasa_Case")
                .Cells(sonsat1, "A") = ComboBox1.Value
                .Cells(sonsat1, "B") = ""
                .Cells(sonsat1, "C") = TextBox10.Value
                .Cells(sonsat1, "D") = ""
                .Cells(sonsat1, "E") = CDate(TextBox2)
                .Cells(sonsat1, "F") = Format(Now, "dd.mm.yyyy - hh:mm:ss")
                If TextBox11 <> "" Then
                .Cells(sonsat1, "G") = TextBox11.Value
                Else
                .Cells(sonsat1, "G") = 0
                End If
                .Cells(sonsat1, "H") = Format(TextBox12, "0.00") * 1
                .Cells(sonsat1, "K") = TextBox14.Value
             End With
        ElseIf ComboBox1.Value = "Veresiye Tahsilat (+)" Then
            With Sheets("Kasa_Case")
                .Cells(sonsat1, "A") = ComboBox1.Value
                .Cells(sonsat1, "B") = ""
                .Cells(sonsat1, "C") = TextBox10.Value
                .Cells(sonsat1, "D") = ""
                .Cells(sonsat1, "E") = CDate(TextBox2)
                .Cells(sonsat1, "F") = Format(Now, "dd.mm.yyyy - hh:mm:ss")
                If TextBox11 <> "" Then
                .Cells(sonsat1, "G") = TextBox11.Value
                Else
                .Cells(sonsat1, "G") = 0
                End If
                .Cells(sonsat1, "I") = Format(TextBox12, "0.00") * 1
                .Cells(sonsat1, "K") = TextBox14.Value
             End With
        ElseIf ComboBox1.Value = "Tedarikçiye Ödeme (-)" Then
            With Sheets("Kasa_Case")
                .Cells(sonsat1, "A") = ComboBox1.Value
                .Cells(sonsat1, "B") = ""
                .Cells(sonsat1, "C") = TextBox10.Value
                .Cells(sonsat1, "D") = ""
                .Cells(sonsat1, "E") = CDate(TextBox16)
                .Cells(sonsat1, "F") = Format(Now, "dd.mm.yyyy - hh:mm:ss")
                If TextBox11 <> "" Then
                .Cells(sonsat1, "G") = TextBox11.Value
                Else
                .Cells(sonsat1, "G") = 0
                End If
                .Cells(sonsat1, "I") = Format(TextBox12, "0.00") * 1
                .Cells(sonsat1, "K") = TextBox14.Value
             End With
        ElseIf ComboBox1.Value = "Alış İade (-)" Then
            With Sheets("Kasa_Case")
                .Cells(sonsat1, "A") = ComboBox1.Value
                .Cells(sonsat1, "B") = ""
                .Cells(sonsat1, "C") = TextBox10.Value
                .Cells(sonsat1, "D") = ""
                .Cells(sonsat1, "E") = CDate(TextBox16)
                .Cells(sonsat1, "F") = Format(Now, "dd.mm.yyyy - hh:mm:ss")
                If TextBox11 <> "" Then
                .Cells(sonsat1, "G") = TextBox11.Value
                Else
                .Cells(sonsat1, "G") = 0
                End If
                .Cells(sonsat1, "I") = Format(TextBox12, "0.00") * 1
                .Cells(sonsat1, "K") = TextBox14.Value
             End With
            
          ElseIf ComboBox1.Value = "Nakit Gider (-)" Then
            With Sheets("Kasa_Case")
                .Cells(sonsat1, "A") = ComboBox1.Value
                .Cells(sonsat1, "B") = ""
                .Cells(sonsat1, "C") = TextBox10.Value
                .Cells(sonsat1, "D") = ""
                .Cells(sonsat1, "E") = CDate(TextBox2)
                .Cells(sonsat1, "F") = Format(Now, "dd.mm.yyyy - hh:mm:ss")
                If TextBox11 <> "" Then
                .Cells(sonsat1, "G") = TextBox11.Value
                Else
                .Cells(sonsat1, "G") = 0
                End If
                .Cells(sonsat1, "I") = Format(TextBox12, "0.00") * 1
                .Cells(sonsat1, "K") = ""
            End With
            
        ElseIf ComboBox1.Value = "Veresiye Gider (-)" Then
            With Sheets("Kasa_Case")
                .Cells(sonsat1, "A") = ComboBox1.Value
                .Cells(sonsat1, "B") = ""
                .Cells(sonsat1, "C") = TextBox10.Value
                .Cells(sonsat1, "D") = ""
                .Cells(sonsat1, "E") = CDate(TextBox2)
                .Cells(sonsat1, "F") = Format(Now, "dd.mm.yyyy - hh:mm:ss")
                If TextBox11 <> "" Then
                .Cells(sonsat1, "G") = TextBox11.Value
                Else
                .Cells(sonsat1, "G") = 0
                End If
                .Cells(sonsat1, "I") = Format(TextBox12, "0.00") * 1
                .Cells(sonsat1, "K") = TextBox14.Value
            End With
        ElseIf ComboBox1.Value = "Veresiye Ödeme (-)" Then
            With Sheets("Kasa_Case")
                .Cells(sonsat1, "A") = ComboBox1.Value
                .Cells(sonsat1, "B") = ""
                .Cells(sonsat1, "C") = TextBox10.Value
                .Cells(sonsat1, "D") = ""
                .Cells(sonsat1, "E") = CDate(TextBox2)
                .Cells(sonsat1, "F") = Format(Now, "dd.mm.yyyy - hh:mm:ss")
                If TextBox11 <> "" Then
                .Cells(sonsat1, "G") = TextBox11.Value
                Else
                .Cells(sonsat1, "G") = 0
                End If
                .Cells(sonsat1, "H") = Format(TextBox12, "0.00") * 1
                .Cells(sonsat1, "K") = TextBox14.Value
            End With
            
        ElseIf ComboBox1.Value = "Alış Faturası (+)" Then
            With Sheets("Kasa_Case")
                .Cells(sonsat1, "A") = ComboBox1.Value
                .Cells(sonsat1, "B") = ""
                .Cells(sonsat1, "C") = TextBox10.Value
                .Cells(sonsat1, "D") = ""
                .Cells(sonsat1, "E") = CDate(TextBox16)
                .Cells(sonsat1, "F") = Format(Now, "dd.mm.yyyy - hh:mm:ss")
                If TextBox11 <> "" Then
                .Cells(sonsat1, "G") = TextBox11.Value
                Else
                .Cells(sonsat1, "G") = 0
                End If
                .Cells(sonsat1, "H") = Format(TextBox12, "0.00") * 1
                .Cells(sonsat1, "K") = TextBox14.Value
            End With
        End If

     Next i
    
    
    
'ComboBox1 = ""
TextBox10 = ""
TextBox11 = ""
TextBox12 = ""
TextBox14 = ""
TextBox15 = ""
TextBox16 = ""
ListBox2.Clear

Sheets("Kasa_Case").Protect Password:="1453"
Application.ScreenUpdating = True
TextBox1.SetFocus
UserForm2.Show
ActiveWorkbook.Save
End Sub

Merhaba,

Belirttiğim kodlarda şöylesi bir sorun yaşıyorum sanki. İlgili kodlar ile veri kaydı yapmaya çalışıyorum. Ancak kayıt işlemi yaklaşık 4-5 saniye alıyor. Kaydedilen veri fazla değil. Bunun nedeni if li ifadelerin fazla olmasından kaynaklanıyor olabilir mi yoksa excel sayfasındaki verilerin fazla olmasından mı kaynaklanıyor , yada farklı bir durum. ( orjinal dosyada en fazla 2000 satır veri var şuan )

Orjinal dosyada dediğim gibi 4-5 saniye alıyor ancak buraya örnek dosya yüklemek için gerçek verileri silip örnek birkaç deneme amaçlı kayıt yaptığımda bu süre kısalmış oluyor. Bunun nedeni ne olabilir.

İlgili kodlar useform1 üzerindeki "detaylı kayıt" butonu altında. ctrl+m ile userform1 açılmakta.

Zaruri bir mesaj değil ancak hem merak ettiğim için, hem de siteye örnek bir dosya olması amacı ile mesaj atmaktayım.
 

Ekli dosyalar

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Anladığım kadarıyla Detaylı Kayıt düğmesi sadece mevcut kaydı sayfaya eklemek için kullanılıyor, yani sadece 1 kayıt yapıyor. Ancak kodda For next döngüsü kullanmışsınız. Yine anladığım kadarıyla bu döngü nedeniyle kodlar mevcut her satır için yeni kaydı tekrar tekrar yazıyor. Hep aynı satıra yazdığı için kayıt sayısı açısından sorun olmuyor ama işlem gereksiz yere tekrar tekrar ve tekrar edildiği için süreç uzuyor doğal olarak.

Koddaki For i = 1 To sonsat1 ve Next i satırlarını silerseniz kayıt işlemi olması gerektiği gibi bir kerede yapılıp sonuçlandırılır.
 

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
671
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Anladığım kadarıyla Detaylı Kayıt düğmesi sadece mevcut kaydı sayfaya eklemek için kullanılıyor, yani sadece 1 kayıt yapıyor. Ancak kodda For next döngüsü kullanmışsınız. Yine anladığım kadarıyla bu döngü nedeniyle kodlar mevcut her satır için yeni kaydı tekrar tekrar yazıyor. Hep aynı satıra yazdığı için kayıt sayısı açısından sorun olmuyor ama işlem gereksiz yere tekrar tekrar ve tekrar edildiği için süreç uzuyor doğal olarak.

Koddaki For i = 1 To sonsat1 ve Next i satırlarını silerseniz kayıt işlemi olması gerektiği gibi bir kerede yapılıp sonuçlandırılır.
Yusuf bey teşekkürler, dediğinizi uygulayacağım, haklısınız, tek satırlı bir işlem yapılmakta.
 
Üst