Her Döngü İçin VBA nasıl kullanılır? (Excel Örnekleriyle)

Her Döngü İçin Excel VBA

Her Döngü İçin VBA , tüm nesne veya öğe koleksiyonundan geçer ve benzer bir dizi etkinlik gerçekleştirir. Belirtilen tüm mevcut nesneleri dikkate alacak ve her bir nesnede talimat verilen etkinliği gerçekleştirecektir.

VBA'da döngüleri anlamak zorunludur. Bir döngü, excel'deki birçok hücre veya nesne için aynı tür aktiviteyi gerçekleştirmenize olanak tanır. Bugünün makalesinde, Her Döngü İçin mekanizmasına odaklanacağız.

Sözdizimi

Her Döngü için, nesnelerin veya öğelerin tüm set koleksiyonunda döngü olabilir. Bir grup, "Tüm açık çalışma kitapları", "Bir çalışma kitabındaki tüm çalışma sayfaları", "Çalışma kitabındaki tüm şekil ve grafik koleksiyonu" dan başka bir şey değildir.

Söz dizimine bakalım.

Koleksiyondaki Her Nesne İçin Ne Yapmalı? Sonraki Nesne

Örneğin, çalışma kitabınızda 10 sayfanız var ve içinde bulunduğunuz dışındaki tüm çalışma sayfalarını gizlemek istiyorsunuz. El ile gizleyebilir misiniz? Evet, yapabilirsin, ama ya bunun gibi 100 çarşafın varsa? Bu sıkıcı ve zaman alıcı bir iş değil mi? Bunu her döngü için kullanarak yapabilirsiniz.

VBA'da Her Döngü İçin Nasıl Kullanılır? (Örnekler)

Örnek 1 - Tüm Sayfalara Aynı Metni Ekleme

Basit bir örnekle VBA'da FOR EACH'in nasıl kullanılacağını göreceğiz. Bir çalışma kitabında 5 çalışma sayfanız olduğunu ve A1 hücresindeki tüm çalışma sayfalarına "Merhaba" kelimesini eklemek istediğinizi varsayalım.

Bunu FOR EACH LOOP ile yapabiliriz. Burada hatırlamanız gereken bir şey, bu aktiviteyi aynı çalışma sayfasında değil, her çalışma sayfasında yapıyoruz. VBA kodunu yazmak için aşağıdaki adımları izleyin.

Adım 1: Excel makrosunu başlatın.

Kod:

Alt For_Each_Example1 () End Sub

2. Adım: Çalışma sayfalarına atıfta bulunduğumuz için değişkeni "Çalışma Sayfası" olarak bildirin.

Kod:

Alt For_Each_Example1 () Dim Ws As Worksheet End Sub

Adım 3: Şimdi, HER DÖNGÜ İÇİN kullanarak, etkin çalışma kitabındaki her çalışma sayfasına başvurmamız gerekiyor.

Kod:

Alt For_Each_Example1 () ActiveWorkbook'taki Her Çalışma Sayfası İçin Çalışma Sayfası Olarak Dim Ws.Worksheets Next Ws End Sub

Adım 4: Şimdi, her çalışma sayfasına ne yapmak istediğimizi yazın. Her çalışma sayfasında, A1 hücresine "Merhaba" kelimesini koymamız gerekir.

Kod:

Sub For_Each_Example1 () ActiveWorkbook.Worksheets Ws.Range ("A1") içindeki Her Çalışma Sayfası İçin Çalışma Sayfası Olarak Dim Ws Değer = "Merhaba" Sonraki Ws End Sub

Adım 5: Şimdi bu kodu seçenek aracılığıyla manuel olarak çalıştırın veya F5 kısayol tuşuna basın. Kaç sayfanız olduğu önemli değil; tüm çalışma sayfalarına "Merhaba" kelimesini ekleyecektir.

Örnek 2 - Tüm Sayfaları Gizle

Gönderide daha önce de belirtildiği gibi, içinde bulunduğunuz sayfa dışında saklayabileceğiniz yüzlerce sayfanız varsa ne olur? Kullanımı Her döngü için, tüm sayfaları excel'de gizleyebiliriz.

Adım 1: Makroyu adınızla başlatın.

Kod:

Alt For_Each_Example2 () End Sub

2. Adım: Değişkeni " Ws " olarak bildirin.

Kod:

Alt For_Each_Example2 () Dim Ws As Worksheet End Sub

Adım 3: Şimdi, her çalışma sayfasında yapmanız gereken, sayfayı gizlemektir.

Kod:

Sub For_Each_Example2 () ActiveWorkbook.Worksheets'teki Her Ws İçin Çalışma Sayfası Olarak Dim Ws Ws.Visible = xlSheetVeryHidden Next Ws End Sub

Adım 4: Ancak yukarıdaki kodu çalıştırırsanız, tüm sayfaları gizlemeye çalışır, ancak excel'in en az bir sayfanın görünür olması gerekir. Bu yüzden hangi sayfayı saklamayacağımızı söylememiz gerekiyor.

Kod:

Sub For_Each_Example2 () ActiveWorkbook.Worksheets'teki Her Çalışma Sayfası İçin Çalışma Sayfası Olarak Dim Ws.Name "Main Sheet" Sonra Ws.Visible = xlSheetVeryHidden End If Next Ws End Sub

Operatör sembol aracı değil VBA ile eşit .

So code says when you are looping through all the worksheets in the active workbook, hide only if the sheet name is not equal to the sheet name of Main Sheet.

This can be done by using the IF statement in VBA. Write the code as IF Ws.Name “Main Sheet” Then hide or if it is equal to the sheet name “Main Sheet,” then don’t hide.

Step 5: Now run the code using the F5 key or manually. Then, it will hide all the worksheets except the one named “Main Sheet.”

Example #3 - Unhide All the Sheets

We have seen how to hide all sheets except the one we are in. Similarly, we can unhide all the worksheets as well.

We need to change the code from xlSheetVeryHidden to xlSheetVisible.

Code:

Sub For_Each_Example3() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Visible = xlSheetVisible Next Ws End Sub

Here we don’t need the IF condition because we are unhiding all the sheets. If you don’t want to unhide any specific sheet, then you can use the IF condition and supply the sheet name.

Example #4 - Protect and UnProtect All the Sheets

Protect All Sheets: We can protect all the sheets in the workbook with just a piece of code. All the principle is the same only thing we need to do here is instead of Ws. Visible, we need to put the code Ws. Protect and type the password.

Code:

Sub For_Each_Example4() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Protect Password:="Excel@2019" Next Ws End Sub

Tüm Sayfaların Korumasını Kaldırma: Benzer bir notta, VBA kullanarak çalışma kitabında korunan tüm sayfaların korumasını da kaldırabiliriz. Korumayı kaldır ve şifreyi yazmamız gerekiyor.

Kod:

Sub For_Each_Example6 () ActiveWorkbook.Worksheets'teki Her Çalışma İçin Çalışma Sayfası Olarak Dim Ws Ws.Unprotect Password: = "Excel @ 2019" Next Ws End Sub

Hatırlanacak şeyler

  • Her biri nesnelerin toplanması içindir.
  • Belirtilen çalışma kitabındaki belirtilen tüm nesneleri dikkate alacaktır.
  • Değişkeni bildirirken, hangi nesneye başvurduğumuza ihtiyacımız var - örneğin, Çalışma Sayfası, Çalışma Kitabı, Grafik vb.

Ilginç makaleler...