DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Hocam öncelikle elinize sağlık. Bu kodu excelde bulunan tüm sayfalar için ilk açılışta uygulama şansımız var mı?Merhaba,
Satır silme işlemini tek tek yerine topluca yaparsanız kodlar biraz daha hızlı sonuç verecektir.
Deneyiniz. Kodu dosyanızda ki veriye göre revize etmek gerekebilir.
Kod:Option Explicit Sub Sil() Dim X As Long, Son As Long, Alan As Range Application.ScreenUpdating = False Application.Calculation = xlCalculationManual On Error Resume Next Son = Cells.Find("*", Cells(1, 1), , , xlByRows, xlPrevious).Row On Error GoTo 0 If Son > 1 Then For X = 2 To Son If WorksheetFunction.CountBlank(Range("C" & X & ":F" & X)) = 4 Then If Alan Is Nothing Then Set Alan = Cells(X, "C") Else Set Alan = Application.Union(Alan, Cells(X, "C")) End If End If Next If Not Alan Is Nothing Then Alan.EntireRow.Delete End If Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True MsgBox "İşleminiz tamamlanmıştır." End Sub
Option Explicit
Sub Auto_Open()
Dim WS As Worksheet, X As Long, Son As Long, Alan As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each WS In ThisWorkbook.Worksheets
On Error Resume Next
Son = WS.Cells.Find("*", WS.Cells(1, 1), , , xlByRows, xlPrevious).Row
On Error GoTo 0
Set Alan = Nothing
If Son > 1 Then
For X = 2 To Son
If WorksheetFunction.CountBlank(WS.Range("C" & X & ":F" & X)) = 4 Then
If Alan Is Nothing Then
Set Alan = WS.Cells(X, "C")
Else
Set Alan = Application.Union(Alan, WS.Cells(X, "C"))
End If
End If
Next
If Not Alan Is Nothing Then Alan.EntireRow.Delete
End If
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
MsgBox "İşleminiz tamamlanmıştır."
End Sub
Option Explicit
Sub Auto_Open()
Rem Değişkenleri tanımlıyoruz.
Dim WS As Worksheet, X As Long, Son As Long, Alan As Range
Rem Kodun hızlı çalışması için ekran hareketlerini ve hesaplama yöntemini pasif hale getiriyoruz.
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Rem Dosyadaki adınız belirttiğimiz sayfaları işlem yapmak üzere döngüye alıyoruz.
For Each WS In ThisWorkbook.Worksheets(Array("Sayfa1", "Sayfa2", "Sayfa3"))
Rem Sayfadaki son dolu satırı tespit ediyoruz.
On Error Resume Next
Son = WS.Cells.Find("*", WS.Cells(1, 1), , , xlByRows, xlPrevious).Row
On Error GoTo 0
Rem Alan değişkenini sıfırlıyoruz.
Set Alan = Nothing
Rem İşlem yapılan sayfada 1 satırdan fazla veri varsa işleme devam ediyoruz.
If Son > 1 Then
Rem İşlem yapılan sayfada 2. satırdan itibaren son satıra kadar döngü oluşturuyoruz.
For X = 2 To Son
Rem C-F aralığındaki hücrelerde veri varmı kontrol ediyoruz.
If WorksheetFunction.CountBlank(WS.Range("C" & X & ":F" & X)) = 4 Then
Rem Eğer C-F aralığında veri yoksa yani boşsa bu alana ait C hücresini silinecek satır olarak ALAN değişkenine yüklüyoruz.
If Alan Is Nothing Then
Set Alan = WS.Cells(X, "C")
Else
Rem Eğer ALAN değişkenine daha önce bir hücre yüklendiyse Union komutu ile hücreleri adres olarak birleştirerek işleme devam ediyoruz.
Set Alan = Application.Union(Alan, WS.Cells(X, "C"))
End If
End If
Rem Diğer satırların kontrolü için döngüye devam ediyoruz.
Next
Rem Bütün satırların kontrolü tamamlanınca ALAN değişkenine bazı hücre adresleri yüklenmiş olacaktır. Eğer ALAN değişkeni boş değilse yüklenmiş satırların tümünü sil diyoruz.
If Not Alan Is Nothing Then Alan.EntireRow.Delete
End If
Rem İsmi tanımlanmış sıradaki sayfa için döngüye devam ediyoruz.
Next
Rem Kodun sonunda ekran hareketlerini ve hesaplama yöntemini tekrar aktif hale alıyoruz.
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Rem İşlemin bittiğine ilişkin kullanıcıyı bilgilendiriyoruz.
MsgBox "İşleminiz tamamlanmıştır."
End Sub
Hocam emeğinize, muhteşem eğitici yorumlamanıza ve sabrınıza ayrı ayrı teşekkür etmek istiyorum. Saygılarımla.Öncelikle bir önceki önerdiğim koda bir satır ekledim. Son haliyle daha sağlıklı çalışacaktır.
Son talebinize göre aşağıdaki yapı işinizi görecektir.
C++:Option Explicit Sub Auto_Open() Rem Değişkenleri tanımlıyoruz. Dim WS As Worksheet, X As Long, Son As Long, Alan As Range Rem Kodun hızlı çalışması için ekran hareketlerini ve hesaplama yöntemini pasif hale getiriyoruz. Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Rem Dosyadaki adınız belirttiğimiz sayfaları işlem yapmak üzere döngüye alıyoruz. For Each WS In ThisWorkbook.Worksheets(Array("Sayfa1", "Sayfa2", "Sayfa3")) Rem Sayfadaki son dolu satırı tespit ediyoruz. On Error Resume Next Son = WS.Cells.Find("*", WS.Cells(1, 1), , , xlByRows, xlPrevious).Row On Error GoTo 0 Rem Alan değişkenini sıfırlıyoruz. Set Alan = Nothing Rem İşlem yapılan sayfada 1 satırdan fazla veri varsa işleme devam ediyoruz. If Son > 1 Then Rem İşlem yapılan sayfada 2. satırdan itibaren son satıra kadar döngü oluşturuyoruz. For X = 2 To Son Rem C-F aralığındaki hücrelerde veri varmı kontrol ediyoruz. If WorksheetFunction.CountBlank(WS.Range("C" & X & ":F" & X)) = 4 Then Rem Eğer C-F aralığında veri yoksa yani boşsa bu alana ait C hücresini silinecek satır olarak ALAN değişkenine yüklüyoruz. If Alan Is Nothing Then Set Alan = WS.Cells(X, "C") Else Rem Eğer ALAN değişkenine daha önce bir hücre yüklendiyse Union komutu ile hücreleri adres olarak birleştirerek işleme devam ediyoruz. Set Alan = Application.Union(Alan, WS.Cells(X, "C")) End If End If Rem Diğer satırların kontrolü için döngüye devam ediyoruz. Next Rem Bütün satırların kontrolü tamamlanınca ALAN değişkenine bazı hücre adresleri yüklenmiş olacaktır. Eğer ALAN değişkeni boş değilse yüklenmiş satırların tümünü sil diyoruz. If Not Alan Is Nothing Then Alan.EntireRow.Delete End If Rem İsmi tanımlanmış sıradaki sayfa için döngüye devam ediyoruz. Next Rem Kodun sonunda ekran hareketlerini ve hesaplama yöntemini tekrar aktif hale alıyoruz. Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Rem İşlemin bittiğine ilişkin kullanıcıyı bilgilendiriyoruz. MsgBox "İşleminiz tamamlanmıştır." End Sub