Vba: ad belirli bir metin içeriyorsa sayfayı silin


Belirli bir metin içeren bir Excel çalışma kitabındaki her sayfayı silmek için VBA’da aşağıdaki sözdizimini kullanabilirsiniz:

 SubDeleteSheets ()

    Dim TextToFind As String
    Dim TextWildcard As String
    Dim Ws As Worksheet
    Dim i As Integer
    
    'prompt user for text to search for in sheet names
    TextToFind = Application.InputBox(" Delete Sheets That Contain: ", _
                                    ThisWorkbook.ActiveSheet.Name, , , , , 2)
                                    
    TextWildcard = " * " & TextToFind & " * "
    Application.DisplayAlerts = False
    
    'loop through sheets and delete each sheet that contains text
    i = 0
    For Each Ws In ThisWorkbook.Sheets
        If Ws.Name Like TextWildcard Then
            Ws.Delete
            i = i + 1
        End If
    Next Ws
    
    Application.DisplayAlerts = True
    
End Sub

Bu özel makroyu çalıştırdığınızda, belirli bir metin dizesini girebileceğiniz bir giriş kutusu görünecektir.

Enter tuşuna bastığınızda, Excel çalışma kitabındaki söz konusu metni içeren her sayfa otomatik olarak silinecektir.

Not : Application.DisplayAlerts=False satırı, VBA’ya sayfaları silme işlemini görüntülememesini söyler, bu da çalışmasını hızlandırır.

Aşağıdaki örnek, bu sözdiziminin pratikte nasıl kullanılacağını gösterir.

Örnek: Belirli bir metni içeren sayfaları silmek için VBA’yı kullanın

Dört sayfa içeren aşağıdaki Excel çalışma kitabına sahip olduğumuzu varsayalım:

Şimdi sayfa adında “Takım” geçen her sayfayı silmek istediğimizi varsayalım.

Bunun için aşağıdaki makroyu oluşturabiliriz:

 SubDeleteSheets ()

    Dim TextToFind As String
    Dim TextWildcard As String
    Dim Ws As Worksheet
    Dim i As Integer
    
    'prompt user for text to search for in sheet names
    TextToFind = Application.InputBox(" Delete Sheets That Contain: ", _
                                    ThisWorkbook.ActiveSheet.Name, , , , , 2)
                                    
    TextWildcard = " * " & TextToFind & " * "
    Application.DisplayAlerts = False
    
    'loop through sheets and delete each sheet that contains text
    i = 0
    For Each Ws In ThisWorkbook.Sheets
        If Ws.Name Like TextWildcard Then
            Ws.Delete
            i = i + 1
        End If
    Next Ws
    
    Application.DisplayAlerts = True
    
End Sub

Bu makroyu çalıştırdığımızda sayfa adlarında aramak istediğimiz metni girebileceğimiz bir giriş kutusu belirir:

“Takım” yazıp Tamam’a bastığımızda, adın herhangi bir yerinde “Takım” geçen sayfa adları otomatik olarak silinecektir:

Sayfa adında “Ekip” yazan iki sayfanın kaldırıldığını unutmayın.

“Takım” ifadesinin yer almadığı sayfalara dokunulmamıştı.

Ek kaynaklar

Aşağıdaki eğitimlerde VBA’da diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:

VBA: Bir çalışma kitabındaki sayfaların sayısı nasıl sayılır?
VBA: Başka bir çalışma kitabından veri nasıl çıkarılır
VBA: birden fazla satır nasıl eklenir

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir