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

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.