VBA Delete sheet yöntemi, VBA kullanarak bir sayfayı kaldırmak için kullanılır. Bir çalışma sayfasını sildiğimizde varsayılan olarak kullanıcıdan silmeyi onaylamasını ister. Bir çalışma kitabındaki çalışma sayfası, iletişim kutusundaki Delete düğmesine tıkladığımızda silinir. Bir çalışma kitabından belirli bir çalışma sayfasını kaldırmak için kod yazmak, özellikle büyük veri kümelerini işlemek, sıkıcı görevleri otomatikleştirmek ve birkaç sayfada tek tip veri biçimlendirmesini garantilemek için faydalıdır.
Bir örneğe bakalım. Burada, çalışma sayfası 2'yi kaldırmak için VBA Delete Sheet işlevini kullanan bir kod yazacağız. Aşağıdaki VBA kodu, "DeleteSheetByIndex" adlı bir alt rutin tanımlar. Çalışma kitabındaki ikinci sayfayı silmek için, dizinle erişilen "Worksheets" koleksiyonunu kullanır.

Çalışma Sayfaları(2)'deki 2 sayısı silinecek sayfanın dizinini belirtir.


- VBA Sayfa Silme, VBA kodu içeren bir çalışma kitabındaki sayfaları silmek için kullanılır.
- VBA silme sayfaları, diğer ölçütlerin yanı sıra sayfa adı, dizin veya kullanıcı girdisi ile kullanılabilir. Sayfaları silerken denetimi ve özelleştirmeyi geliştirmek için sayfaları koruyabilir veya kullanıcılardan girdi isteyebilirsiniz.
- Varolmayan sayfaları silerken çalışma zamanı hatalarını önlemek için hata işleme özelliğini kullanın (yukarıdaki örneklerde gösterildiği gibi).
- Kodunuzu çalıştırmadan önce, tutmak istediğiniz tüm sayfaları görünür hale getirdiğinizden emin olun; çünkü VBA gizli sayfaları da silebilir.
VBA Kodu Kullanarak Excel Sayfaları Nasıl Silinir?
Excel sayfalarını VBA kodu kullanarak silmek birkaç adımı içerir:
- Excel'i açın ve VBA düzenleyicisini açmak için ALT + F11 tuşlarına basın.

- Menüde “Ekle”ye tıklayıp “Modül”ü seçerek yeni bir modül ekleyin.

- İstenilen sayfayı veya sayfaları kaldırmak için VBA kodunu yazın. Sayfalar, ad, dizin ve diğer ölçütler dahil olmak üzere çeşitli ölçütler kullanılarak silinebilir.
İşte tipik örneklerden birkaçı:

- VBA kodunuz tamamlandıktan sonra düzenleyiciyi kapatın ve Excel elektronik tablonuza geri dönün. Ardından, VBA kodunu çalıştırmak için “Çalıştır” veya “Alt + F8” tuşlarına basarak gerekli makroyu seçin ve “Makro” iletişim kutusunu açın.
- Belirtilen sayfaların Excel çalışma kitabınızdan silindiğini doğrulayın.
Örnekler
Örnek #1 – Çalışma Sayfasını Adını Kullanarak Silin
Bu örnekte, “Sheet1” adlı çalışma sayfasını silen VBA Delete Sheet fonksiyonunu kullanacağız.

Adım 1: Yeni modülde, ilk olarak “DeleteSheetByName” adında yeni bir alt rutin oluşturarak başlıyoruz.

Adım 2: Bu satırda, bir string olarak “sheetName” değişkenini bildiriyoruz. Bu değişken, silmek istediğiniz sayfanın adını saklayacaktır.

Adım 3: Burada, silmek istediğiniz sayfanın adını “sheetName” değişkenine atarsınız. “Sheet1”i kodunuzda silmek istediğiniz sayfanın adıyla değiştirebilirsiniz.

Adım 4: Bu satır, sheetName değişkeninde belirtilen adla çalışma sayfasını siler. Sayfaya erişmek için Worksheets koleksiyonunu ve silmek için “.Delete” yöntemini kullanır.

Adım 5: Makroyu kaydedin ve çalıştır'a tıklayın. Bu kodu çalıştırdığınızda, Excel çalışma kitabındaki “Sheet1” adlı çalışma sayfasını siler.

İşte kodun tamamı:
Sub DeleteSheetByName()
Dim sheetName As String
sheetName = “Sayfa1”
Worksheets(sheetName).Delete
End Sub
Örnek 2 – Çalışma Sayfasını Adına Göre Değişkenlerle Sil
Bu örnekte, kullanıcıdan silmeye çalışmadan önce bir sayfaya isim vermesini isteyen ve sorunsuz bir çalışma zamanı sağlamak için olası hataları da ele alan bir VBA makrosunun nasıl yazılacağına bakacağız.

Adım 1: Bu satır, “DeleteSheetByVariable” adlı bir VBA alt rutininin başlangıcını tanımlar.

Adım 2: Sonra, ilk örnekte yaptığımız gibi bir dize olarak “sheetName” değişkenini bildiriyoruz . Bu değişken silinecek sayfanın adını tutacak.

Adım 3: Burada, kullanıcının silmek istediği sayfanın adını girebileceği bir giriş kutusu görüntülüyoruz . Girilen ad daha sonra sheetName değişkeninde saklanır.

Adım 4: Bu satır hata işlemeyi başlatır, yani sonraki kodda oluşan hatalar yok sayılır ve kodun çalışmaya devam etmesine izin verilir.

Adım 5: “sheetName” değişkeninde verilen isme sahip çalışma sayfası bu kod satırıyla silinir. Hata işleme nedeniyle, sayfa mevcut değilse bir hata oluşmaz.

Adım 6: Bu satır hata işlemeyi devre dışı bırakır. Sayfayı sildikten sonra, hataları normal şekilde işlemek için hata işleme kapatılır.

Adım 7: Bu kodu çalıştırdığınızda kullanıcıdan bir sayfa adı girmesi istenir.

Adım 8: Girdiğiniz ve Tamam'a tıkladığınızda belirtilen isimli sayfayı kaldırmaya çalışır, ayrıca sayfa mevcut değilse hataları da işler.

İşte kodun tamamı :
Sub DeleteSheetByVariable()
Dim sheetName As String
sheetName = InputBox(“Silmek istediğiniz sayfanın adını girin:”)
On Error Resume Next
Worksheets(sheetName).Delete
On Error Goto 0
End Sub
Örnek 3 – Etkin Çalışma Sayfasını Sil
Bu örnekte, kullanıcıdan onay istemeden “Sheet5” olarak bilinen çalışma sayfasını kaldıracak bir VBA makrosunun nasıl yazılacağını öğreneceğiz .

Adım 1: Yeni modülde ilk olarak “DeleteActiveSheet” adında bir VBA alt rutini oluşturuyoruz.

Adım 2: Burada, Worksheet veri türünden bir "activeSheet" değişkeni bildiriyoruz . Bu değişken, şu anda etkin olan sayfaya bir referans tutacaktır.

Adım 3: Şimdi, “ activeSheet ” değişkenini çalışma kitabındaki şu anda etkin olan “Sheet5” sayfasına başvuracak şekilde ayarlayacağız .

Adım 4: Bu kod satırı, activeSheet değişkeni tarafından başvurulan ve şu anda etkin olan çalışma sayfasını siler.

Adım 5: Şimdi makroyu kaydedin ve çalıştır'a tıklayın. Kod yürütüldüğünde, öncelikle çalışma sayfasını kaldırıp kaldırmamaya karar vermenizi isteyecektir. Silme işlemini seçerseniz, Excel çalışma kitabındaki "Sheet5" olarak adlandırılan çalışma sayfası herhangi bir onay iletişim kutusu veya uyarısı olmadan kaldırılacaktır.


İşte tam kod:
Sub DeleteActiveSheet()
Dim activeSheet As Worksheet
Set activeSheet = Sheet5
activeSheet.Delete
End Sub
Örnek 4 – Birden Fazla Çalışma Sayfasını Silin
Bu örnek, VBA'nın "Sheet2", "Sheet3" ve "Sheet4" adlarıyla bir döngüde birkaç çalışma sayfasını silmek için nasıl kullanılacağını gösterir. Ayrıca, mevcut olmayan sayfaları yok saymak için hata işleme kullanılır ve böylece sorunsuz bir silme prosedürü sağlanır.

Adım 1: Bu satır “DeleteMultipleSheets” adlı bir VBA alt rutininin başlangıcını tanımlar.

Adım 2: Burada, silinecek sayfaların adlarını tutmak için bir dizi değişkeni olan “sheetNames” bildiriyoruz. Bu bir dizidir çünkü birden fazla sayfa adı belirtebilirsiniz.

Adım 3: Bu kod satırı , VBA'deki "Sheet2, Sheet3, Sheet4" dizesini ayırıcı olarak virgülü kullanarak bir diziye böler. Ortaya çıkan dizi, silinecek sayfaların adlarını içerir.

Adım 4: Şimdi, bir döngüde kullanılacak “i” sayaç değişkenini tanımlıyoruz.

Adım 5: Bu satır, sheetNames dizisinin elemanları arasında alt sınırdan üst sınıra doğru yineleme yapan bir döngü başlatır.

Adım 6: Burada, dizide belirtilen bir sayfanın bulunmaması durumunda hataları yok saymak için hata işlemeyi başlatıyoruz.

Adım 7: Bu satır, “sheetNames” dizisinin geçerli öğesi tarafından belirtilen adla çalışma sayfasını siler. Bir sayfa yoksa, hata işleme nedeniyle bir hata tetiklemez.

Adım 8: Son olarak, daha sonraki kodlardaki hataları normal şekilde işleyebilmek için, bu kod satırı sayfaların silinmesinden sonra oluşan hata işlemeyi devre dışı bırakır.

Adım 9: Kodun tamamı yürütüldüğünde, Excel çalışma kitabında mevcutsa “Sheet2”, “Sheet3” ve “Sheet4” çalışma sayfaları kaldırılacak ve VBA'daki hata işleme nedeniyle mevcut olmayanlar yok sayılacaktır .


İşte kodun tamamı:
Sub DeleteMultipleSheets()
Dim sheetNames() As String
sheetNames = Split(“Sheet2,Sheet3,Sheet4”, “,”)
Dim i As Integer
For i = LBound(sheetNames) To UBound(sheetNames)
On Error Resume Next
Worksheets(sheetNames(i)).Delete
on Error Goto 0
Next i
End Sub
Dikkat Edilmesi Gereken Önemli Noktalar
- VBA Delete Sheet sayfaları kalıcı olarak siler; bir “Geri Al” seçeneği mevcut değildir. VBA silme sayfalarını kullanırken dikkatli olun.
- Hataları önlemek için, VBA Delete Sheet If Exists özelliği, silme işleminin yalnızca belirtilen sayfa mevcut olduğunda gerçekleştirilmesini sağlar.
- VBA Delete Sheet If Name Contains işlevini kullanarak, adının belirli anahtar sözcükler veya ifadeler içerip içermediğine bağlı olarak bir sayfayı silebilirsiniz. Bu özelliği, ölçütlere veya adlandırma kalıplarına bağlı olarak hangi sayfaların silineceğini belirlemek için kullanabilirsiniz.
- VBA Delete Sheet Without Warning mesajları veya istemleri kullanabilirsiniz. Silme işleminden önce “Application.DisplayAlerts” özelliğini False olarak ayarlayarak silme işlemini kesintiye uğramadan yürütebilirsiniz.
VBA'daki “Application.DisplayAlerts” özelliğini kullanarak, bir istem almadan bir sayfayı silebilirsiniz. Onay iletişim kutularını kaldırmak için, sayfayı silmeden önce False olarak ayarlayın ve daha sonra tekrar True olarak ayarlayın.
İşte bir örnek:
Sub DeleteSheetWithoutPrompt()
Application.DisplayAlerts = False ' Onay iletişim kutusunu devre dışı bırak
Worksheets(“Sheet1”).Delete
Application.DisplayAlerts = True ' Onay iletişim kutusunu etkinleştir
End Sub
