Sayfada uyan satırların tamamını silme

kemal turan

Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,669
Excel Vers. ve Dili
Excel 2010 32 bit
Altın Üyelik Bitiş Tarihi
06-10-2032
Merhaba,
Aşağıdaki kod ile userformdan toplu silme işlemi yapmak istiyorum.
Aynı üründen değişik satırlarda bir çok kez olabiliyor.
50 adet satır var ise silinen satırdan 2 nci satırda var ise bazen siliyor bazen silmiyor.
Farklı bir döngü ile mi silme kodu gerekiyor.
Teşekkür ederim.

Kod:
Sub RECETESIL()
Set s1 = ThisWorkbook.Worksheets("REÇETELER")
Dim bul As Range
For Each bul In s1.Range("F2:F" & s1.Range("f65536").End(3).Row)
If bul.Value = MALZEMELERDEGISTIR.TextBox1.Text Then
bul.EntireRow.Delete
End If
Next bul
MsgBox "İŞLEM TAMAM", , "BY KEMAL TURAN"
MALZEMELER.TextBox1.Value = MALZEMELERDEGISTIR.TextBox2.Value
MALZEMELER.MALZEMEARAMA
End Sub
 

Korhan Ayhan

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

Silme işlemlerinde döngüyü tersten başlatmanız daha uygun olacaktır.
 

kemal turan

Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,669
Excel Vers. ve Dili
Excel 2010 32 bit
Altın Üyelik Bitiş Tarihi
06-10-2032
Korhan hocam merhaba,
Herhalde aşağıdaki kod satırında olacak. Nasıl Yapabilirim.

Kod:
For Each bul In s1.Range("F2:F" & s1.Range("f65536").End(3).Row)
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,274
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben silme işlemlerinde Union komutunu kullanmayı tercih ediyorum. Bu şekilde çok satırlı verilerde silme işlemi oldukça hızlı gerekleşiyor.

Linkte paylaşımlarda bulunmuştuk. İnceleyiniz.

 

kemal turan

Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,669
Excel Vers. ve Dili
Excel 2010 32 bit
Altın Üyelik Bitiş Tarihi
06-10-2032
İyi Geceler KOrhan Hocam,
Teşekkür ederim.
Verdiğiniz linkteki kodu aşağıdaki şekilde revize ettim süper..
Kod:
Option Explicit
Private Sub CommandButton4_Click()
    Dim X As Long, Veri As Variant, Son As Long, Alan As Range, Zaman As Double
  
    Zaman = Timer
    
    Application.ScreenUpdating = 0
    Application.Calculation = -4135
    Application.EnableEvents = 0
    
    Son = Cells(Rows.Count, 1).End(3).Row
    If Son = 1 Then Son = 2
    
    Veri = Range("f1:f" & Son).Value
    
    For X = LBound(Veri) To UBound(Veri)
        If Veri(X, 1) = MALZEMELERDEGISTIR.TextBox1.Text Then
            If Alan Is Nothing Then
                Set Alan = Cells(X, "f")
            Else
                Set Alan = Application.Union(Alan, Cells(X, "f"))
            End If
        End If
    Next
    
    If Not Alan Is Nothing Then
        Alan.EntireRow.Delete
        Application.EnableEvents = 1
        Application.Calculation = -4105
        Application.ScreenUpdating = 1
        MsgBox "Silme işlemi tamamlanmıştır." & vbLf & vbLf & _
               "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
    Else
        Application.EnableEvents = 1
        Application.Calculation = -4105
        Application.ScreenUpdating = 1
        MsgBox "Silinecek satır bulunamadı!", vbExclamation
    End If
End Sub
 
Üst