• DİKKAT

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

sheet silme

Gün farkında ayın gün sayıları değiştiğini için (28 gün 29 gün 30 gün 31 gün) sorun çıkar. Ama ayı 2 ay geri yaparsanız sorun olmaz.
 
Tekrar merhaba.

Bir de küçük userformdaki düğmenin kodlarını aşağıdakiyle değiştirerek deneyin.
ŞABLON, SİSTEM, Sayfa1 gibi tarih olmayan sayfalara dokunulmaz,
bugünden ileri tarihli sayfalar ile içinde bulunduğumuz aydan 2 eksik aya ait sayfalar silinir.

NOT: Denemeler yaparken küçük userformun özelliklerinden ShowModal kısmını False yaparsanız,
form ekranda iken de sayfada işlem (yeni sayfa ekleme gibi denemelerde yararlı olur) yapabilirsiniz.
.
Kod:
[B]Private Sub CommandButton3_Click()[/B]
TextBox1 = Format(Date, "dd.mm.yyyy")
If TextBox1.Value = "" Then
    MsgBox ("Sayfa ismi boş geçilemez! Lütfen sayfa ismi yazınız.")
    Exit Sub
End If 'textboxu boş geçmeme

Dim s As Integer
For s = Sheets.Count To 1 Step -1
    If Len(Sheets(s).Name) = 10 Then
        If IsDate(Sheets(s).Name) And ([B][COLOR="Red"]Month(Date) - Month(CDate(Sheets(s).Name)) > 1[/COLOR][/B] Or CDate(Sheets(s).Name) > Date) Then
            Application.DisplayAlerts = False
                Sheets(s).Delete
            Application.DisplayAlerts = True
        End If
    End If
Next
 Dim S1 As Worksheet
    If TextBox1 = "" Then
        MsgBox "Lütfen sayfa ismi giriniz!", vbCritical
        TextBox1.SetFocus
        Exit Sub
    End If
    On Error Resume Next
    Set S1 = Sheets(TextBox1.Text)
    On Error GoTo 0
    If S1 Is Nothing Then
        Sheets("ŞABLON").Copy After:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = TextBox1.Text
    Else
        MsgBox TextBox1.Text & " isimli sayfa daha önce eklenmiş!", vbCritical
        With TextBox1
            .SetFocus
            .SelStart = 0
            .SelLength = (Len(.Text))
        End With
    End If
        Set S1 = Nothing
'        MsgBox "Sayfa oluşturuldu."
[B]End Sub[/B]
 
:)))))))

ömer hocam işte bu ya işte buuu. :))))

sizin değerli emeğinize ne kadar iltifat etsem azdır inanın. sonunda muazzam bir çalışma oldu. hepinizin sayesinde. emeklerinize sağlık ne desem az kalır. çok çok teşekkür ederim emeği geçen herkee bu konuda.

siz ve askm hocamın bu konuda emeği gerçekten çok büyük.
 
hocam peki burdaki kodda 2 ay eksik gün olduğunu hangi satır gösteriyor.
 
Son sorduğunuz soru: önceki cevabımdaki kod'da kırmızı renklendirdim ( >1 ise ...)
İleri tarihlerin silinmesi ise aynı satırda OR'dan sonrası.

Bir de tarih şeklinde ismi olan sayfaları büyüklük sırasına sıralamak için makyaj kod'u vereyim.
(Tabi ismi tarih olmayanları en sola kendiniz alacaksınız)
.
Kod:
[B]Sub SIRALA()[/B]
Dim sayfa As Variant
Dim syf As Variant
Application.ScreenUpdating = False
    For Each sayfa In ActiveWorkbook.Sheets
        For syf = 2 To ActiveWorkbook.Sheets.Count
            On Error Resume Next
            If CDate(Sheets(syf - 1).Name) > CDate(Sheets(syf).Name) Then
                Sheets(syf - 1).Move After:=Sheets(syf)
            End If
        Next
    Next
Application.ScreenUpdating =True
[B]End Sub[/B]
 
ömer hocam siz benim düşüncelerimi okuyorsunuz sanki bir ara bununla ilgili sormuştum ama cevap bulamadım sanırım bu kod işe yarayacak gibi. sıralam kodu yani. bilginiz üzere tarih seçtiğimiz combobox 10 vardı anakasa userformında. son eklediğim tarihi en üstte göstersin diye. yani büyükten küçüğe sıralama ölüçütü. bunuda excel kitabımdaki isimleri soraya dizmekle mümkümdü sanırım bu kod onun için on numara oşacak gibi :)
 
If IsDate(Sheets(s).Name) And (Month(Date) - Month(CDate(Sheets(s).Name)) > 1 Or CDate(Sheets(s).Name) > Date) Then

ömer hocam burası neden hata veriyor acaba
 
Geri
Üst