Excel Formül
Modül 3: Karar Yapıları ve Döngüler

For Each Döngüsü (Nesnelerle Çalışmak)

Standart For döngüsünde 1'den 100'e kadar sayıp satırları tarıyorduk. Ancak For Each ("Her biri için") döngüsü çok daha akıllıdır. Sayaç (i) kullanmaz, doğrudan Nesneleri (Object) hedefler.

Postacı Metaforu ile For Each

Bir sokağa (A1:A5 aralığına) mektup dağıtacağınızı düşünün.

👉 Klasik For: "Önce 1 numaralı eve git, sonra 2 numaralı eve git..." diyerek evleri sayıyla hedefler.
👉 For Each: "Şu sokaktaki (Koleksiyondaki) HER BİR EV (hucre) için sırayla kapıya git" der. Adres numarası bilmesine veya saymasına gerek yoktur!

Koleksiyon (Collection) Mantığı

For Each daima bir koleksiyonun içinde gezer. VBA'da Range("A1:A10") bir hücreler koleksiyonudur. Worksheets ise Excel sayfaları koleksiyonudur.

Dim hucre As Range ' Kutumuzu sayı değil, 'Hücre' nesnesi olarak tanımladık

For Each hucre In Range("A1:A10")
    hucre.Value = "Test"
Next hucre

Canlı Simülatör: Hızlı Not Kontrolü

Hedef Nesne:
Bekliyor...

Aşağıdaki makroda For Each döngüsü ve If koşulunu birleştirdik. Döngü A1'den A5'e kadar her bir hücreyi (hucre) tek tek ziyaret edecek, notu 50'den küçük olanları kırmızıya, büyük olanları yeşile boyayacak.

Visual Basic Editörü
Module1 (Code)
Sub Renklendir()
    Dim hucre As Range

    ' A1:A5 aralığındaki her bir hücre için:
    For Each hucre In Range("A1:A5")

        If hucre.Value >= 50 Then
            hucre.Interior.Color = vbGreen
        Else
            hucre.Interior.Color = vbRed
        End If

    Next hucre

    MsgBox "Kontrol bitti!", vbInformation
End Sub
Canlı Excel Sayfası
A1
A (Notlar)
1
45
2
88
3
30
4
95
5
60
Microsoft Excel ✕
Tüm notlar başarıyla tarandı ve renklendirildi!