Video: Excel 2016 VBA Beginner Tutorial - Introduction to Macros & VBA 2024
VBA, Excel 2016'da başka bir döngü türünü desteklemektedir: her nesne arasında döngü Nesnelerin bir koleksiyonu. Bildiğiniz gibi, bir koleksiyon, aynı türden birkaç nesne içerir. Örneğin, Excel tüm açık çalışma kitaplarının (Çalışma Kitabı koleksiyonu) bir koleksiyona sahiptir ve her çalışma kitabında bir çalışma kümesi vardır (Çalışma kağıdı koleksiyonu).
Bir koleksiyondaki her nesne arasında döngü oluşturmanız gerektiğinde For Each-Next (Her Biri İçin Sonraki) yapısını kullanın. Aşağıdaki örnek, etkin çalışma kitabındaki her bir çalışma sayfasını döndürür ve boşsa çalışma sayfasını siler:
Alt DeleteEmptySheets () Çalışma Sayfası Uygulaması Olarak Dim WkSht. DisplayAlerts = ActiveWorkbook'da her WkSht için yanlış. Worksheets If WorksheetFunction. CountA (WkSht. Hücreler) = 0 Sonra WkSht. Sonraki WkSht Uygulaması Olursa Sonunu Sil. DisplayAlerts = True End Sub
Bu örnekte, WkSht değişkeni, çalışma kitabındaki her bir çalışma sayfasını temsil eden bir nesne değişkeni. Değişken adı WkSht hakkında özel hiçbir şey yoktur; istediğiniz herhangi bir değişkeni kullanabilirsiniz.
Kod her çalışma sayfasında döngü yapar ve boş olmayan hücreleri sayarak boş bir sayfa belirler. Bu sayı sıfırsa, sayfa boştur ve silinmiştir. Döngü işini yaparken DisplayAlerts ayarı kapalı olduğuna dikkat edin. Bu ifade olmadan Excel, bir sayfanın silinmek üzere olduğuna dair bir uyarı açar.
Çalışma kitabındaki tüm çalışma sayfaları boşsa, Excel yalnızca tek sayfayı silmeye çalışırken bir hata mesajı alırsınız. Normalde, bu durumu çözecek kodu yazarsınız.
İşte Her Bir Sonraki Örnek için başka. Bu yordam, etkin sayfa dışındaki etkin çalışma kitabındaki tüm çalışma sayfalarını gizlemek için bir döngü kullanır.
Alt HideSheets () Aktif Çalışma Kitabındaki Her Sht İçin Çalışma Sayfası Dim Sht. İşleri If Sht. ActiveSheet'e bir isim verin. Adı sonra Sht. Visible = xlSheetHidden End If Sonraki Sht End Sub
HideSheets yordamı, sayfa adını denetler. Etkin sayfanın adı aynı değilse, sayfa gizlenir. Visible özelliğinin Boolean olmadığına dikkat edin. Bu özellik aslında üç değerlerinden herhangi birini alabilir ve Excel, üç yerleşik sabit sunar. Üçüncü olasılığı (xlVeryHidden) merak ediyorsanız, Yardım sistemini kontrol edin.
Gizlenen şeyin sonunda gizlenmesi gerekiyor; bu nedenle, etkin çalışma kitabındaki tüm çalışma sayfalarını gösteren bir makro var:
Sub Hareketler İşareti () Aktif Çalışma Kitabındaki Her Sht için Çalışma Sayfası Olarak Dim Sht. Çalışma kağıtları Sht.Visible = xlSheetVisible Sonraki Sht End Sub
Şaşırtıcı olmayan bir şekilde, iç içe geçmiş For Each-Next döngülerini oluşturabilirsiniz. CountBold yordamı, her açık çalışma kitabındaki her çalışma sayfasında kullanılan aralıktaki her hücrede döngüye döner ve kalın olarak biçimlendirilen hücrelerin sayısını görüntüler:
Sub CountBold () Dim WBook As Workbook Dim WSheet As Worksheet Dim Cell Range Dim Cnt olarak WBook'daki Her WSheet İçin Çalışma Kitaplarındaki Her WBook İçin Uzun Olarak. WSheet'teki Her Hücre İçin Çalışma Sayfaları. UsedRange If Cell. Yazı tipi. Bold = Gerçek Sonra Cnt = Cnt + 1 Sonraki Hücre Sonraki WSheet Sonraki WBook MsgBox Cnt & "Koyu hücreler bulundu" End Sub