KOD YAVAŞ ÇALIŞIYOR

polis-53

Altın Üye
Katılım
26 Aralık 2008
Mesajlar
1,118
Excel Vers. ve Dili
EXCEL 2016 TÜRKÇE
Altın Üyelik Bitiş Tarihi
23-02-2025
Merhaba arkadaşlar ekdeki kod çok yavaş çalışıyor hizlandırma için yardım bekliyorum kolay gelsin.
Kod:
Sub temizle()
Dim sayfa As Worksheet
Dim satir As Integer
Dim sat_buy As Integer
For i = 1 To 22
        If i = 1 Then
        sat_buy = 7
        Else
        sat_buy = 25
        End If
    Set sayfa = ThisWorkbook.Worksheets("Sayfa" & i)
    satir = Module2.satir_bul(sayfa.Name, "1.", "c")
    
        For j = satir To satir + sat_buy - 1
             If i = 1 Then
            sayfa.Cells(j, "I") = ""
            sayfa.Cells(j, "AM") = ""
            sayfa.Cells(j, "BK") = ""
            sayfa.Cells(j, "CI") = ""
            sayfa.Cells(j, "CW") = ""
            sayfa.Cells(j, "DD") = ""
            sayfa.Cells(j, "EG") = ""
            Else
            sayfa.Cells(j, "I") = ""
            sayfa.Cells(j, "AH") = ""
            sayfa.Cells(j, "BF") = ""
            sayfa.Cells(j, "CD") = ""
            sayfa.Cells(j, "CU") = ""
            sayfa.Cells(j, "DB") = ""
            sayfa.Cells(j, "EE") = ""
         End If
        Next
Next
End Sub
 

DoğanD

Altın Üye
Katılım
22 Eylül 2023
Mesajlar
427
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
05-10-2028
Merhaba,

Kodun başına Application.ScreenUpdating = False ve Application.Calculation = xlCalculationManual satırlarını ekleyin. End Sub'dan hemen önce de Application.ScreenUpdating = True ve Application.Calculation = xlCalculationAutomatic
kodlarını ekleyin.

Bununla birlikte hücre boşaltma işini döngü ile değil, Range işlevi ile yapmanız daha sağlıklı olacaktır. Örneğin;

sayfa.Cells(j, "I") = "" yerine sayfa.Range("I" &satir + sat_buy - 1).ClearContents kullanabilirsiniz.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Deneyiniz.
Kod:
Sub temizle()
    Dim sayfa As Worksheet
    Dim Satir As Range
    Dim sat_buy As Integer
    
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    For i = 1 To 22
        If i = 1 Then
            sat_buy = 7
        Else
            sat_buy = 25
        End If
        
        Set sayfa = ThisWorkbook.Worksheets("Sayfa" & i)
        Set Satir = sayfa.Range("C:C").Find(what:="1.", lookat:=xlWhole)
        
        sayfa.Range("I" & Satir & ":I" & Satir + sat_buy).ClearContents
        If i = 1 Then
            sayfa.Range("AM" & Satir & ":AM" & Satir + sat_buy).ClearContents
            sayfa.Range("BK" & Satir & ":CI" & Satir + sat_buy).ClearContents
            sayfa.Range("CW" & Satir & ":CW" & Satir + sat_buy).ClearContents
            sayfa.Range("DD" & Satir & ":DD" & Satir + sat_buy).ClearContents
            sayfa.Range("EG" & Satir & ":EG" & Satir + sat_buy).ClearContents
        Else
            sayfa.Range("AH" & Satir & ":AH" & Satir + sat_buy).ClearContents
            sayfa.Range("BF" & Satir & ":AM" & Satir + sat_buy).ClearContents
            sayfa.Range("CD" & Satir & ":CD" & Satir + sat_buy).ClearContents
            sayfa.Range("CU" & Satir & ":CU" & Satir + sat_buy).ClearContents
            sayfa.Range("DB" & Satir & ":DB" & Satir + sat_buy).ClearContents
            sayfa.Range("EE" & Satir & ":EE" & Satir + sat_buy).ClearContents
        End If
    Next
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub
 

polis-53

Altın Üye
Katılım
26 Aralık 2008
Mesajlar
1,118
Excel Vers. ve Dili
EXCEL 2016 TÜRKÇE
Altın Üyelik Bitiş Tarihi
23-02-2025
Merhaba.

Deneyiniz.
Kod:
Sub temizle()
    Dim sayfa As Worksheet
    Dim Satir As Range
    Dim sat_buy As Integer
   
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    For i = 1 To 22
        If i = 1 Then
            sat_buy = 7
        Else
            sat_buy = 25
        End If
       
        Set sayfa = ThisWorkbook.Worksheets("Sayfa" & i)
        Set Satir = sayfa.Range("C:C").Find(what:="1.", lookat:=xlWhole)
       
        sayfa.Range("I" & Satir & ":I" & Satir + sat_buy).ClearContents
        If i = 1 Then
            sayfa.Range("AM" & Satir & ":AM" & Satir + sat_buy).ClearContents
            sayfa.Range("BK" & Satir & ":CI" & Satir + sat_buy).ClearContents
            sayfa.Range("CW" & Satir & ":CW" & Satir + sat_buy).ClearContents
            sayfa.Range("DD" & Satir & ":DD" & Satir + sat_buy).ClearContents
            sayfa.Range("EG" & Satir & ":EG" & Satir + sat_buy).ClearContents
        Else
            sayfa.Range("AH" & Satir & ":AH" & Satir + sat_buy).ClearContents
            sayfa.Range("BF" & Satir & ":AM" & Satir + sat_buy).ClearContents
            sayfa.Range("CD" & Satir & ":CD" & Satir + sat_buy).ClearContents
            sayfa.Range("CU" & Satir & ":CU" & Satir + sat_buy).ClearContents
            sayfa.Range("DB" & Satir & ":DB" & Satir + sat_buy).ClearContents
            sayfa.Range("EE" & Satir & ":EE" & Satir + sat_buy).ClearContents
        End If
    Next
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub
Çok teşekkür ederim yarın işe gidince deneyeceğim.
Hayırlı akşamlar.
 

polis-53

Altın Üye
Katılım
26 Aralık 2008
Mesajlar
1,118
Excel Vers. ve Dili
EXCEL 2016 TÜRKÇE
Altın Üyelik Bitiş Tarihi
23-02-2025
Merhaba,

Kodun başına Application.ScreenUpdating = False ve Application.Calculation = xlCalculationManual satırlarını ekleyin. End Sub'dan hemen önce de Application.ScreenUpdating = True ve Application.Calculation = xlCalculationAutomatic
kodlarını ekleyin.

Bununla birlikte hücre boşaltma işini döngü ile değil, Range işlevi ile yapmanız daha sağlıklı olacaktır. Örneğin;

sayfa.Cells(j, "I") = "" yerine sayfa.Range("I" &satir + sat_buy - 1).ClearContents kullanabilirsiniz.
merhaba
sayfa.Cells(j, "I") = "" yerine sayfa.Range("I" &satir + sat_buy - 1).ClearContents satır kodunu dediğiniz şekilde değişince hata veriyor.
 

DoğanD

Altın Üye
Katılım
22 Eylül 2023
Mesajlar
427
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
05-10-2028
Merhaba,

Örnek olsun diye yazmıştım satırı tamamlamadan. Muzaffer Bey'in kodları benim anlatmaya çalıştığımın uygulanmış versiyonu aslında.

sayfa.Range("I" & Satir & ":I" & Satir + sat_buy).ClearContents
 
Üst