• DİKKAT

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

sil makrosunun yavaş çalışması

Merhaba.

Anladığım kadarıyla zaman alan işlem sıra numarası verme işlemi.

UserForm kod sayfasındaki sırano_yeniden ve CommandButton4_Click
kodlarını aşağıdakilerle değiştirerek deneyiniz.
Böylece,
-- hem sıra numarası verme işlemi sadece silinen satırdan sonrası için yapılacak ve
-- hem de numaralandırma işlemi daha hızlı olacaktır.
.
Kod:
[B][FONT="Arial Narrow"]Private Sub CommandButton4_Click()[/B]
If ListBox1.ListIndex >= 0 Then
    Cevap = MsgBox("Bilgi Silinecek ... Emin misiniz ?", vbYesNo, "SİLME ONAYI")
        If Cevap = vbYes Then
            Silinecek_Satir = ListBox1.ListIndex + 2
                Sheets("DATA").[M1] = Silinecek_Satir
                    Sheets("DATA").Rows(Silinecek_Satir).Delete
                End If
            Call sırano_yeniden
        End If
    Sheets("DATA").[M1] = ""
ListBox1.ListIndex = Sheets("DATA").[J65536].End(3).Row - 2
[B]End Sub[/B]

[B]Sub sırano_yeniden()[/B]
Application.ScreenUpdating = False
    On Error Resume Next
        Set S1 = ThisWorkbook.Worksheets("DATA")
            If S1.[M1] <> "" Then
                ilk = S1.[M1]
                    Else
                        ilk = 2
                        End If
                    Sheets("DATA").Range("A" & S1.[M1] & ":A65536").ClearContents
                sonsatir = S1.Range("B65536").End(xlUp).Row
            With S1.Range("A" & ilk & ":A" & sonsatir)
        .Formula = "=ROW()-1": .Value = .Value
    End With
Call listbox1_doldur
[B]End Sub[/FONT][/B]
 
Son düzenleme:
Merhaba.

Anladığım kadarıyla zaman alan işlem sıra numarası verme işlemi.

UserForm kod sayfasındaki sırano_yeniden ve CommandButton4_Click
kodlarını aşağıdakilerle değiştirerek deneyiniz.
Böylece,
-- hem sıra numarası verme işlemi sadece silinen satırdan sonrası için yapılacak ve
-- hem de numaralandırma işlemi daha hızlı olacaktır.
.
Kod:
[FONT="Arial Narrow"][B]Private Sub CommandButton4_Click()[/B]
 If ListBox1.ListIndex >= 0 Then
        Cevap = MsgBox("Bilgi Silinecek ... Emin misiniz ?", vbYesNo, "SİLME ONAYI")
        If Cevap = vbYes Then
            Silinecek_Satir = ListBox1.ListIndex + 2
            Sheets("DATA").[K1] = Silinecek_Satır
            Sheets("DATA").Rows(Silinecek_Satir).Delete
        End If
        Call sırano_yeniden
    End If
            Sheets("DATA").[K1] = ""
[B]End Sub[/B]

[B]Sub sırano_yeniden()[/B]
Application.ScreenUpdating = False
On Error Resume Next
Set S1 = ThisWorkbook.Worksheets("DATA")
If S1.[K1] <> "" Then
    ilk = S1.[K1]
Else
    ilk = 2
End If
    Sheets("DATA").Range("A" & S1.[K1] & ":A65536").ClearContents
    sonsatir = S1.Range("b65536").End(xlUp).Row
        With S1.Range("A" & ilk & ":A" & sonsatir)
            .Formula = "=ROW()-1": .Value = .Value
        End With
Call listbox1_doldur
[B]End Sub[/B][/FONT][/COLOR]
Ömer Bey hızlanma konusunda sıkıntı gitti lakin a sütununda sıralama da hata oluştu ben mi hata yaptım acaba?
 
Şu an bigisayar başonda değilim, cep telefonundan yazyorum.
Daha sonra tekrar bakarım.
 
Tekrar merhaba.
Önceki verdiğim cevapta yer alan kod'u yeniledim.
DATA sayfasındaki veri alanı TABLO olarak tanımlanmış olduğundan, daha önce kod tarafından kullanıldığını
belirterek kullanmamanızı önerdiğim K1 hücresi yerine M1 hücresini kullandım, ayrıca önceki
verdiğim kod'da Silinecek_Satır olarak kullandığım değişken adında hata yaptığımı,
olması gerekenin Silinecek_Satir olduğunu fark ettim.

Herneyse kod'un düzenlenmiş halini önceki cevabıma ekledim.
Sayfayı yenileyerek önceki cevabımı tekrar kontrol ediniz.

.
 
Çok teşekkür ederim tam istediğim gibi olmuş süpersiniz. Kolay gelsin.
 
Çok teşekkür ederim tam istediğim gibi olmuş süpersiniz. Kolay gelsin.
Estağfurullah, iyi günler dilerim.

Bir de öneri, en azından belge hazırlık aşamasındayken (kodlar da denemeler yaparken),
--Userform'un Properties kısmındaki ShowModal özelliğini False yapıp,
--kodlardaki Application.ScreenUpdating =False satırlarını sol başlarına TEK TIRNAK koyup pasif hale getirerek
çalışmanızı öneririm.

Böylece UserForm aktifken;
-- excel belgesinde de işlem yapabilir,
-- userform kodlarının sayfada yaptığı işlemleri gözlemleyebilirsiniz.

Form ve kodlarla ilgili tüm işlemler bittiğinde, sorunsuz hale geldiğinde, belirttiklerimi tersine çevirir
ve belgeyi tamamen UserForm üzerinden yönetebilirsiniz diye düşünüyorum.
.
 
Önerinizi dikkate alacam muhakkak teşekkürler.
 
Geri
Üst