• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

KOD YAVAŞ ÇALIŞIYOR

Katılım
26 Aralık 2008
Mesajlar
1,145
Excel Vers. ve Dili
EXCEL 2016 TÜRKÇE
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
 
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.

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
 
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.
 
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.
 
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
 
Geri
Üst