EXCEL VBA'DA DELETE SHEET [SAYFA SİLME]

 

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.

Excel VBA Sayfa Silme - Tanım 1

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

Excel VBA Sayfa Silme Tanımı 1(1)
Excel VBA Sayfa Silme Tanımı 1(2)

ÖNEMLİ NOKTALAR

  1. VBA Sayfa Silme, VBA kodu içeren bir çalışma kitabındaki sayfaları silmek için kullanılır.
  2. 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.
  3. 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).
  4. 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:

  1. Excel'i açın ve VBA düzenleyicisini açmak için ALT + F11 tuşlarına basın.

    VBA Sayfa Silme Adımı 1

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

    VBA Sayfa Silme Adımı 2

  3. İ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 Kodunu Kullanarak Excel Sayfaları Nasıl Silinir - Adım 3

  4. 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.

  5. 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.

VBA Sayfa Silme Örneği-1

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

VBA Sayfa Silme-Örnek-1-Adım-1

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.

VBA Sayfa Silme-Örnek-1-Adım-2

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.

VBA Sayfa Silme-Örnek-1-Adım-3

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.

VBA Sayfa Silme-Örnek-1-Adım-4

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.

VBA Sayfa Silme-Örnek-1-Adım-5

İş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.

VBA Sayfa Silme Örneği-2

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

VBA Sayfa Silme-Örnek-2-Adım-1

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.

VBA Sayfa Silme-Örnek-2-Adım-2

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.

VBA Sayfa Silme-Örnek-2-Adım-3

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.

VBA Sayfa Silme-Örnek-2-Adım-4

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.

VBA Sayfa Silme-Örnek-2-Adım-5

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.

VBA Sayfa Silme-Örnek-2-Adım-6

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

VBA Sayfa Silme-Örnek-2-Adım-7

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.

VBA Sayfa Silme-Örnek-2-Adım-8

İş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 .

VBA Sayfa Silme Örneği-3

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

VBA Sayfa Silme-Örnek-3-Adım-1

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.

VBA Sayfa Silme-Örnek-3-Adım-2

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

VBA Sayfa Silme-Örnek-3-Adım-3

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.

VBA Sayfa Silme-Örnek-3-Adım-4

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.

VBA Sayfa Silme-Örnek-3-Adım-5
VBA Sayfa Silme-Örnek-3-Adım-5(1)

İş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.

VBA Sayfa Silme Örneği-4

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

VBA Sayfa Silme-Örnek-4-Adım-1

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.

VBA Sayfa Silme-Örnek-4-Adım-2

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.

VBA Sayfa Silme-Örnek-4-Adım-3

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

VBA Sayfa Silme-Örnek-4-Adım-4

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.

VBA Sayfa Silme-Örnek-4-Adım-5

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

VBA Sayfa Silme-Örnek-4-Adım-6

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.

VBA Sayfa Silme-Örnek-4-Adım-7

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.

VBA Sayfa Silme-Örnek-4-Adım-8

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 .

VBA Sayfa Silme-Örnek-4-Adım-9
VBA Sayfa Silme-Örnek-4-Adım-9(1)

İş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

  1. 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.
  2. 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.
  3. 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.
  4. 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'da bir sayfa istemsiz olarak nasıl silinir?

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

Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...