Skip to content

Makro ile Çok Fazla Sayfayı Hızlıca Silebilirsiniz!

İÇİNDEKİLER

    Merhaba,

    Excel belgelerinde eğer çok fazla sayfa var ise ve bu sayfaları silmek bir noktadan sonra zorlaşıyor ise bu makromuz, bu iş için tam biçilmiş kaftan…

    Bu makalemizde bir veya daha çok sayfayı hızlıca silebileceğimiz bir makro uygulamasını form ara yüzü kullanarak nasıl silebileceğimizi göstereceğim. Uygulamanın çalışan son hali aşağıdaki gibidir. Silmek istediğimiz sayfaları seçerek, tarayarak, arama yaparak veya tümünü seç gibi işlemleri yaparak seçebilir ve silebiliriz. Çoklu seçim için Ctrl tuşuna basarak seçim yapmak oldukça kolay ve pratiktir.

    Uygulamamız için ilk etapta yukarda görülen form’u tasarlıyoruz.

    Daha sonra Tümünü Seç, Tümünü Kaldır ve Sil düğmeleri için kodlar yazıyoruz. Form arayüzünü açmak için Crtl+j kısayolu ile formu çağırabiliriz.

    Form yüklendiğinde yani aktif olduğunda o Excel belgesinde normalde kaç tane sayfa var ise otomatik olarak listeye eklenmesini istiyoruz.

    Bunun için aşağıdaki kod bloğunu kullanırız:

    Private Sub UserForm_Activate()

    ‘Form önyükleme

    For Each k In Sheets

    ListBox1.AddItem k.Name

    Next k

    End Sub

    Form açıldıktan sonra istediğimiz sayfaları tek tek seçerek, taratarak veya arama yaparak seçip Sil düğmesine tıkladığımızda otomatik olarak silebiliriz.

    Tümünü seçmek için aşağıdaki kodu kullanırız. Bu kod çalıştığında form içinde kaç tane sayfa var ise hepsinin onay düğmesi seçili hale gelecektir.

    Private Sub CommandButton2_Click()

    ‘Tümünü seç

    For i = 0 To ListBox1.ListCount – 1

    ListBox1.Selected(i) = True

    Next i

    End Sub

    Seçili olan tüm sayfalarda Tümünü Kaldır düğmesine tıkladığımızda ne kadar seçili sayfa var ise hepsininde seçimleri iptal olur bunun için aşağıdaki kod bloğunu kullanırız.

    Private Sub CommandButton3_Click()

    ‘Tümünü Kaldır

    For i = 0 To ListBox1.ListCount – 1

    ListBox1.Selected(i) = False

    Next i

    End Sub

    Eğer arama kutucuğunu kullanarak silme yapmak istersek istediğimiz sayfa adını yazarak listbox içinden arama işlemini yaptırıp seçili olan sayfa veya sayfaları silebiliriz. Bu işlem için aşağıdaki kod bloğunu kullanırız.

    Private Sub TextBox1_Change()

    ‘Arama

    Dim i As Integer

    Dim j As Integer

    With ListBox1

    .MultiSelect = fmMultiSelectSingle

    .ListIndex = -1

    .MultiSelect = fmMultiSelectMulti

    For i = 0 To .ListCount – 1

    For j = 0 To .ColumnCount – 1

    If LCase(InStr(1, .Column(j, i), TextBox1.Text, vbTextCompare)) Then

    .ListIndex = i

    .Selected(i) = True

    End If

    Next j

    Next i

    End With

    End Sub

    Ve son olarak silmek istediğimiz sayfaları seçtikten sonra Sil düğmesine tıklayarak seçili sayfaları kolaylıkla silebiliriz. Bunun için Sil düğmesinin çift tıkladıktan sonra açılan sayfaya aşağıdaki kodu yazmamız yeterlidir. Böylece ne kadar seçili sayfa var ise silinecektir.

    Private Sub CommandButton1_Click()

    ‘Sayfa veya Sayfaları Silme

    On Error Resume Next

    Application.DisplayAlerts = False

    For k = ListBox1.ListCount – 1 To 0 Step -1

    If ListBox1.Selected(k) Then

    Worksheets(ListBox1.List(k, 0)).Delete

    ListBox1.RemoveItem (k)

    End If

    Next k

    Application.DisplayAlerts = False

    End Sub

    Yukardaki makro kodları ile işlemimizi çok kolaylaştıracağız. Tabi bu formu çağırmak içinde bir kısayol atamamız gerekir. Diğer türlü sayfa içinden bir düğme koyup onu tıklayarak çağırmak çok mantıklı olmayacaktır. Ama kendimize özel bir makro sekmesi yapıp bu makroyu oraya bir ikon aracılığı ile yerleştirip kullanabiliriz. Tüm bunların yanı sıra kısayol işlemi oldukça basit ve daha kullanışlıdır. Formları çağırmak için modül ekleyim ilgili formu çağırmamız gerekmektedir. Bunun için makromuza bir modül ekliyor ve içerisine aşağıdaki kodu yazıyoruz.

    Kodda Forma verdiğimiz ismi Show ederek görüntüleyebiliyoruz.

    Aynı şekilde Hide ederek de gizleyebiliriz. Ama bunun için formdaki varsayılan çıkış düğmesinden kapatmayı daha uygun gördüm.

    Bir başka makro makalesinde görüşmek üzere,

    Hoşçakalın.