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