Belli Bir Koşula Kadar Olan Sayfaları Silme

y.selim

Altın Üye
Katılım
13 Nisan 2013
Mesajlar
237
Excel Vers. ve Dili
2010 Türkçe
Merhaba
Tarih tarih kaydedilen sayfaları "1.1 - 2.1 - 3.1 gibi", belli bir tarihe kadar silmek istiyorum.
Döngü ilk sayfadan başlayıp 2.10 adlı sayfa adına kadar olan bütün sayfaları silmeli.
2.10 dan sonraki sayfalar kalmalı.
Bu döngüyü nasıl kurabiliriz.
Teşekkür ederim.
 

Ekli dosyalar

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Kod:
Sub askm()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
On Error Resume Next
Tarih = DateSerial(2018, 10, 2)
For i = 1 To Worksheets.Count
    If IsNumeric(Left(Sheets(i).Name, 1)) Then
        SayfaAdi = Split(Sheets(i).Name, ".")
        If DateSerial(2018, SayfaAdi(1), SayfaAdi(0)) < Tarih Then
            Sheets(i).Delete
        End If
    End If
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Sayfalar silindi...", vbInformation, "ASKM"
End Sub
 
Katılım
16 Kasım 2017
Mesajlar
250
Excel Vers. ve Dili
Excel 2016 Türkçe
Kod:
Sub askm()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
On Error Resume Next
Tarih = DateSerial(2018, 10, 2)
For i = 1 To Worksheets.Count
    If IsNumeric(Left(Sheets(i).Name, 1)) Then
        SayfaAdi = Split(Sheets(i).Name, ".")
        If DateSerial(2018, SayfaAdi(1), SayfaAdi(0)) < Tarih Then
            Sheets(i).Delete
        End If
    End If
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Sayfalar silindi...", vbInformation, "ASKM"
End Sub

Hocam merhabalar. Bende bu konuyla ilgili bir yardım rica edebilirmiyim. Şöyle bir çalışmam var. Ana dosyama, müşteriler klosöründe bulunan dosyalardan ve her dosyanın sayfalarından veri getiriyorum. Bu müşteriler klosöründe bulunan dosyalardaki veriler belli bir süre sonra silinmesi gerekşyor. Şöyle bir kod olabilirmi; müşteriler klosöründeki her dosyanın içinde bulunan sayfalarda a1=b1 ise o sayfa silinsin. Yardımcı olabilirseniz çok makbule geçer. Şimdiden teşekkürler.
 

y.selim

Altın Üye
Katılım
13 Nisan 2013
Mesajlar
237
Excel Vers. ve Dili
2010 Türkçe
İlginiz için teşekkür ederim.

Kodlar çalışıyor. Ama aynı kodu 9 - 10 defa çalıştırdıktan sonra 2.10 adlı sayfaya kadar sildi.
Yani parça parça siliyor. Bu sorunu halledebilir miyiz?

Mesela, Do While döngülerinde olduğu gibi, şartı buluncaya kadar çalışan bir döngü olabilir mi ?
İlk sayfadan başlayıp 2.10 adlı sayfaya kadar çalışsa ve arada ki bütün sayfaları silse?

Bu haliyle benim işimi gördü. Forumda kalıcı olması açısından böyle bir düzenleme yapılabilir ?

İyi çalışmalar.
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Dediğiniz gibi 1. sayfadan belirttiğiniz tarihe kadar döngü devam ediyor. Örneğin 01.01, 02.01 başta 03.01 sonlarda ise 02.10 dan sonra olduğu için 03.01 i silmez.
Kod:
Sub askm()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
On Error Resume Next
Tarih = DateSerial(2018, 10, 2)
For i = 1 To Worksheets.Count
    If IsNumeric(Left(Sheets(i).Name, 1)) Then
        SayfaAdi = Split(Sheets(i).Name, ".")
        Tarih2 = DateSerial(2018, SayfaAdi(1), SayfaAdi(0))
        If Tarih2 < Tarih Then
            Sheets(i).Delete
        ElseIf Tarih2 >= Tarih Then Exit For
        End If
    End If
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Sayfalar silindi...", vbInformation, "ASKM"
End Sub
 

y.selim

Altın Üye
Katılım
13 Nisan 2013
Mesajlar
237
Excel Vers. ve Dili
2010 Türkçe
Merhaba
Bu defa 5.defa çalıştığında hepsini sildi.
Önemli mi bilmiyorum ama sayfa adları 01.01 - 02.01 diye değilde 1.1 - 2.1 diye yazılı.
Ve arada bazı boş günler olabiliyor.
 

Korhan Ayhan

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

Kod:
Sub Sayfa_Sil()
    Dim Ilk_Gun As Integer, Son_Gun As Integer, Ay As Byte, Sayfa As Worksheet, X As Byte, Say As Byte
        
    On Error GoTo Son
    
    Ilk_Gun = Application.InputBox("Lütfen ilk günü giriniz!", "İLK GÜN GİRİŞİ", 1)
    Son_Gun = Application.InputBox("Lütfen son günü giriniz!", "SON GÜN GİRİŞİ", 31)
    Ay = Application.InputBox("Lütfen ayı giriniz!", "AY GİRİŞİ", 1)
    
    Application.DisplayAlerts = False
    
    For Each Sayfa In ThisWorkbook.Worksheets
        For X = Ilk_Gun To Son_Gun
            If Sayfa.Name = X & "." & Ay Then
                Sayfa.Delete
                Say = Say + 1
                Exit For
            End If
        Next
    Next
    
    Application.DisplayAlerts = True
    
Son:
    MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & "Silinen sayfa sayısı ; " & Say & " Adet", vbInformation
End Sub
 

y.selim

Altın Üye
Katılım
13 Nisan 2013
Mesajlar
237
Excel Vers. ve Dili
2010 Türkçe
Korhan Bey , kodlar sorunsuz çalışıyor.

Yalnız , ay ay seçim yapıldığı için 10. aya ulaşmak için 9 defa programı çalıştırmak gerekiyor.
Bunun yerine daha önceki mesajlarda da ifade ettiğim gibi Do While döngüsü ile tek tıkla halledilebilir mi?
Mesela, birinci sayfadan başla, sayfa isimlerinden 2.10 ' u buluncaya kadar devam et ve aradaki tüm sayfaları sil gibi bir komut kullanılabilir mi ?

İlginiz için teşekkür ederim.
 

y.selim

Altın Üye
Katılım
13 Nisan 2013
Mesajlar
237
Excel Vers. ve Dili
2010 Türkçe
VBA çalışırken tam olarak istediğim kodu yazabildim.
İstediğim tek seferde belirtilen kritere kadar olan tüm sayfaların silinmesiydi.



Kod:
Sub KritereGöreSayfaSilme()

Application.DisplayAlerts = False

Dim sf As Worksheet

For Each sf In Worksheets
    
    If sf.Name = "2.10" Then
    Exit For
    Else
    sf.Delete
    End If

Next sf

End Sub
 
Üst