EXCEL VBA'DA FOR EACH LOOP

 


Excel'deki VBA For Each Loop, döngünün başlangıç ​​ve bitiş noktalarını açıkça tanımlamadan çalışma sayfaları, hücreler veya dosyalar gibi bir nesne veya öğe koleksiyonunda yineleme yapmanıza olanak tanıyan bir denetim yapısıdır. Koleksiyonlar arasında döngülemeyi basitleştirir ve özellikle Excel çalışma kitapları ve çeşitli öğeleriyle çalışırken faydalıdır.


Her Döngü İçin Excel VBA 1

Bir örneğe bakalım. Excel çalışma kitabındaki çalışma sayfası adlarının yönetimini kolaylaştırmak için tasarlanmış “FormatSheetNames” adlı bir VBA alt rutinimiz var. Etkin çalışma kitabındaki tüm çalışma sayfalarını yinelemek için bir For Each Loop kullanır. Her sayfayı dolaşırken önemli bir görevi gerçekleştirir: herhangi bir sayfa adının boşluk içerip içermediğini kontrol eder.

Her Döngü İçin Excel VBA 1-1

Koşullu kontrol, sayfa adlarını boşluklar açısından tarayan InStr işlevi tarafından kolaylaştırılır. Bir sayfa adı içinde bir boşluk belirlendiğinde, kod bu boşluğu bir alt çizgiyle değiştirerek hareket eder.

Her Döngü İçin Excel VBA 1-2

ÖNEMLİ NOKTALAR

  1. VBA For Each Loop, herhangi bir başlangıç ​​ve bitiş noktası belirtmeden nesne veya öğe koleksiyonları arasında yineleme yapmak için kullanılır.
  2. VBA For Each Loop, doğal olarak bir koleksiyonda ileriye doğru hareket eder. VBA For Each Loop'u Geriye doğru yinelemek için, azalan bir dizin değişkenine sahip standart bir For Döngüsü kullanın.
  3. VBA For Each Loop, sayfaları, hücreleri, grafikleri veya diğer öğeleri değiştirmek gibi Excel çalışma kitaplarını içeren görevlerin otomatikleştirilmesi için kullanışlıdır.
  4. VBA For Each Loop esas olarak koleksiyonlar içindir, ancak bir indeks değişkeni olan standart bir For Döngüsü kullanarak bir VBA For Each Loop Dizisi içinde yineleme yapabilirsiniz.

Sözdizimi

For Each element In Collection

    ‘ Code to be executed for each element.

Next element

VBA'da For Each Döngüsünün sözdizimi aşağıdaki gibidir:

  • element: Bu değişken koleksiyondaki geçerli öğeyi temsil eder.
  • Koleksiyon: Bu, içinde döngü oluşturmak istediğiniz nesnelerin veya öğelerin koleksiyonudur.

VBA'da For Each Loop Nasıl Kullanılır?

For Each VBA Döngüsünü kullanmanın adımları şunlardır.

Adım 1: Excel çalışma kitabında ALT + F11 tuşlarına basarak Visual Basic for Applications (VBA) düzenleyicisini açın.

VBA'daki Her Döngü Adım 1

Adım 2: VBA düzenleyicisinin içinde, VBA kodunuzu yazabileceğiniz yeni bir modül eklemek için Ekle > Modül'e gidin .

VBA'daki Her Döngü Adım 1-1

Adım 3: Döngü içerisinde, döngüde dolaşmak istediğiniz nesneleri veya öğeleri temsil edecek değişkenleri tanımlayın.

Adım 4: Modül içinde Her Bir Döngü İçin bir Döngü oluşturun. Döngü yapmak istediğiniz nesne veya öğe koleksiyonunu tanımlayın ve her öğe üzerinde gerçekleştirilecek eylemleri belirtin.

Adım 5: Her bir eleman üzerinde istenen eylemleri yürütmek için döngünün içine mantığı yazın. Döngü içinde geçerli elemanın özelliklerine ve yöntemlerine erişebilir ve bunları düzenleyebilirsiniz.

Adım 6: VBA düzenleyicisini kapatın ve Excel çalışma kitabınıza dönün. ALT + F8 tuşlarına basarak, For Each Loop'u içeren makroyu seçerek ve “Run”a tıklayarak VBA kodunu çalıştırın.

Adım 7: Kodu çalıştırdıktan sonra Excel çalışma kitabınızdaki sonuçları inceleyin. Döngü, koleksiyondaki her bir öğeye belirtilen eylemleri uygulamış olmalıdır.

Örnekler

Örnek 1 – Tüm Sayfalara Aynı Metni Ekle

Bu örnekte, aynı metnin VBA kullanarak bir Excel çalışma kitabındaki sayfaların sol üst hücresine nasıl ekleneceğini anlayacağız.

Diyelim ki birden fazla çalışma sayfası olan bir Excel çalışma kitabımız var ve tüm çalışma sayfalarındaki A1 hücresine metin eklemek istiyoruz. Bunu aşağıdaki prosedürü kullanarak başarabiliriz:

Her Döngü İçin VBA Örnek 1

Adım 1: Yeni modülde ilk olarak InsertTextInAllSheets adında bir Alt Rutin (Sub) tanımlayacağız.

Her Döngü İçin VBA Örneği 1-1

Adım 2: Burada, Worksheet türünde bir ws değişkeni bildiriyoruz. Bu değişken, döngüdeki her çalışma sayfasını temsil etmek için kullanılacaktır.

Her Döngü İçin VBA Örneği 1-2

Adım 3: Sonra, bir string olarak textToInsert adında başka bir değişken bildiriyoruz. Bu değişken, her sayfaya eklemek istediğimiz metni depolayacaktır.

Her Döngü İçin VBA Örneği 1-3

Adım 4: Şimdi, “Bu metin eklendi.” dizesini “textToInsert” değişkenine atıyoruz. Bu, her sayfaya eklenecek metindir. Bunu istediğiniz herhangi bir metinle değiştirebilirsiniz.

Her Döngü İçin VBA Örneği 1-4

Adım 5: Şimdi, VBA For Each Loop'u başlatıyoruz. Çalışma kitabındaki (ThisWorkbook) her sayfada yineleme yapacaktır.

Her Döngü İçin VBA Örnek 1-5

Adım 6: Döngünün içinde, hücrelerine erişmek için ws'yi (geçerli çalışma sayfası) kullanırız. Burada, hücrenin ilk satır ve ilk sütundaki (hücre A1) değerini "textToInsert" değişkeninde depolanan metne ayarlarız.

Her Döngü İçin VBA Örneği 1-6

Adım 7: Son olarak, “Next ws” kullanarak döngüyü sonlandırıyoruz. Bu, VBA’ya çalışma kitabındaki bir sonraki sayfaya geçmesini söyler.

Her Döngü İçin VBA Örnek 1-7

Adım 8: Makroyu kaydedin ve Çalıştır'a tıklayın. Çalıştırdığınızda, bu kod aynı metni etkin çalışma kitabındaki tüm sayfaların ilk hücresine ekler.

Her Döngü İçin VBA Örnek 1-8

İşte tam kod:

Sub InsertTextInAllSheets()

    Dim ws As Worksheet

    Dim textToInsert As String

        textToInsert = “This text was inserted.”

        For Each ws In ThisWorkbook.Sheets

        ws.Cells(1, 1).Value = textToInsert

    Next ws

End Sub

Örnek 2 – Tüm Sayfaları Gizle

Bu örnekte, For Each Loop kullanarak bir Excel çalışma kitabındaki tüm çalışma sayfalarını gizleyen bir VBA kodunu inceleyeceğiz. Diyelim ki dört çalışma sayfamız var ve bunları gizlemek istiyoruz; Aşağıdaki adımlar kullanılarak gerçekleştirilebilir:

Her Döngü İçin VBA Örneği 2

Adım 1: Yeni modülde ilk olarak HideAllSheets adında bir Alt Rutin tanımlıyoruz.

Her Döngü İçin VBA Örneği 2-1

Adım 2: Burada çalışma sayfalarını temsil edecek ws değişkenini tanımlıyoruz .

Her Döngü İçin VBA Örneği 2-2

Adım 3: Şimdi çalışma kitabındaki tüm sayfaları yineleyecek bir VBA For Each Loop ekliyoruz.

Her Döngü İçin VBA Örneği 2-3

Adım 4: Döngünün içinde, her çalışma sayfasının (ws) Visible özelliğini xlSheetHidden olarak ayarlıyoruz. Sayfayı gizler.

Her Döngü İçin VBA Örneği 2-4

Adım 5: Son olarak “ Next ws ” kullanarak döngüyü sonlandırıyoruz ve bir sonraki sayfaya geçiyoruz.

Her Döngü İçin VBA Örneği 2-5

Adım 6: Makroyu kaydedin ve çalıştır'a tıklayın. Makroyu çalıştırdığınızda, bu kod etkin çalışma kitabındaki tüm sayfaları gizler.

Her Döngü İçin VBA Örneği 2-6

İşte tam kod:

Sub HideAllSheets()

    Dim ws As Worksheet

        For Each ws In ThisWorkbook.Sheets

        ws.Visible = xlSheetHidden

    Next ws

End Sub

Örnek 3 – Tüm Sayfaları Göster

Bu örnekte, bir Excel çalışma kitabındaki tüm çalışma sayfalarının nasıl gizlendiğini anlayacağız. Bu, daha önce gizlenen sayfaları tekrar görünür hale getirmemize olanak tanıyan bir VBA For Each Loop kullanılarak gerçekleştirilir.

Her Döngü İçin VBA Örneği 3

Adım 1: Yeni modülde UnhideAllSheets adında bir Alt Rutin tanımlayın.

Her Döngü İçin VBA Örneği 3-1

Adım 2: Burada çalışma sayfalarını temsil edecek ws değişkenini tanımlıyoruz.

Her Döngü İçin VBA Örneği 3-2

Adım 3: Şimdi, çalışma kitabındaki tüm sayfaları yineleyecek bir VBA For Each Loop sağlayın.

Her Döngü İçin VBA Örneği 3-3

Adım 4: Döngünün içinde, her çalışma sayfasının (ws) Visible özelliğini xlSheetVisible olarak ayarlıyoruz. Bu özellik sayfayı tekrar görünür hale getirir.

Her Döngü İçin VBA Örneği 3-4

Adım 5: Son olarak “Next ws” kullanarak döngüyü sonlandırıyoruz ve bir sonraki sayfaya geçiyoruz.

Her Döngü İçin VBA Örneği 3-5

Adım 6: Makroyu kaydedin ve Çalıştır'a tıklayın. Makroyu çalıştırdığınızda, bu kod etkin çalışma kitabındaki tüm sayfaları gizler.

Her Döngü İçin VBA Örneği 3-6

İşte tam kod:

Sub UnhideAllSheets()

    Dim ws As Worksheet

        For Each ws In ThisWorkbook.Sheets

        ws.Visible = xlSheetVisible

    Next ws

End Sub

Örnek 4 – Tüm Sayfaları Koru ve Korumasını Kaldır

Bu örnekte, Excel çalışma kitabındaki tüm çalışma sayfalarını belirtilen bir parola ile nasıl koruyabileceğimizi ve çalışma kitabının güvenliğini nasıl artırabileceğimizi göreceğiz.

Adım 1: Yeni modülde ProtectUnprotectSheets adında bir Alt Rutin tanımlayarak başlayın.

Her Döngü İçin VBA Örneği 4-1

Adım 2: Daha sonra çalışma sayfalarını temsil edecek ws değişkenini tanımlıyoruz.

Her Döngü İçin VBA Örneği 4-2

Adım 3: Burada, sayfaları korumak için parolayı saklamak üzere bir dize olarak değişken bir parola tanımlıyoruz.

Her Döngü İçin VBA Örneği 4-3

Adım 4: Şimdi “mypassword” ifadesini şifre değişkenine atıyoruz.

Her Döngü İçin VBA Örneği 4-4

Adım 5: Çalışma kitabındaki tüm sayfaları yineleyen VBA For Each Loop'u sağlayacağız.

Her Döngü İçin VBA Örneği 4-5

Adım 6: Döngü içerisinde Protect metodunu kullanarak her çalışma sayfasını (ws) belirtilen parola ile koruyoruz.

Her Döngü İçin VBA Örneği 4-6

Adım 7: Sayfaların korumasını kaldırmak için “ws.Unprotect Password:=password” komutunu kullanın.

Her Döngü İçin VBA Örneği 4-7

Adım 8: Son olarak “ Next ws ” kullanarak döngüyü sonlandırıyoruz ve bir sonraki sayfaya geçiyoruz.

Her Döngü İçin VBA Örneği 4-8

Adım 9: VBA makrosunu kaydedin ve Çalıştır'a tıklayın. Makroyu çalıştırdığınızda, bu kod etkin çalışma kitabındaki tüm sayfaları belirtilen bir parola ile korur.

Her Döngü İçin VBA Örneği 4-9

İşte tam kod:

Sub ProtectUnprotectSheets()

    Dim ws As Worksheet

    Dim password As String

        password = “mypassword”

        For Each ws In ThisWorkbook.Sheets

        ws.Protect Password:=password

        ‘ To unprotect: ws.Unprotect Password:=password

    Next ws

End Sub

Dikkat Edilmesi Gereken Önemli Noktalar

  1. Belirli bir koşul karşılanırsa, Exit For ifadesini kullanarak VBA For Each Loop'tan erken çıkabilirsiniz.
  2. Öğeler arasında döngü oluştururken olası hataları öngörüyorsanız, istisnaları zarif bir şekilde işlemek için On Error Resume Next'i kullanarak VBA'da hata işleme özelliğini eklemeyi düşünün .
  3. Excel VBA, Çalışma Sayfaları, Hücreler, Grafikler ve daha fazlası dahil olmak üzere döngüye alınacak çeşitli koleksiyonlar sağlar. Görevinize göre uygun koleksiyonu seçin.
  4. VBA'da uyumsuzluk hatalarını önlemek için değişkenleri doğru veri türleriyle bildirdiğinizden emin olun .
  5. VBA'da, "VBA For Each Loop Break", VBA For Each Loop için özel bir 'break' ifadesi olarak mevcut değildir. Bunun yerine, 'Exit For'u kullanarak bir koşula dayalı erken bir çıkış elde edebilirsiniz. 
  6. VBA Her Döngü İçin Sonrakine Geçme döngüsünde geçerli yinelemeyi atlayıp koleksiyondaki bir sonraki öğeye geçmek için “Devam Et”i kullanın  .

Yorum Gönder

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