Alt Başlık Detay


For … Next Döngüsü

Kasım 2020 Döngüler 142 0

Bir grup kodu/ifadeyi belirtilen sayıda tekrarlar. Yazım kuralı aşağıdaki gibidir.

For Sayaç = Başlangıç Değeri To Sayaç Bitiş Değeri [ Step Sayaç Artış Değeri]
   [ Tekrar Edilmesi İstenilen Kod Bloğu ]
Next Sayaç

Sayaç : Kullanılması zorunlu olup, döngüde sayaç olarak kullanılan sayısal değişkendir. Pozitif veya negatif sayı olabilir.
Sayaç Başlangıç Değeri : Kullanılması zorunlu olup, döngünün başlaması istenilen değeridir.
Sayaç Bitiş Değeri : Kullanılması zorunlu olup, döngünün sona ermesi istenilen değeridir.
Sayaç Artış Değeri : Kullanılması zorunlu değildir, ihtiyaca göre kullanılır. Döngünün her defasında artacağı değeri belirler. Kullanılmaz ise, varsayılan değeri 1'dir.
Tekrar Edilmesi İstenilen Kod Bloğu : For ve Next arasında belirtilen sayıda tekrar edilmesi istenilen bir veya daha fazla Kod Bloğudur.

Buradaki belirtilen sayıdan kasıt; Sayaç Başlangıç Değeri ile Sayaç Bitiş Değeri arasındaki farktır. Bu fark kadar For-Next arasındaki  Kod Bloğu tekrar edilir/çalıştırılır. Örneğin başlangıç değeri = 4, bitiş değeri = 9 ise 9 - 4 = 5 değil 6'dır, yani bu farka başlanğıç ve bitiş değerleri dahildir. Kod bloğu 6 kez çalıştırılır. VBA'da kodlar yukarıdan aşağıya doğru satır satır çalıştırılır. Buna göre çalışma sistemini şöyle tarif edebiliriz: Çalışma zamanında For'a gelindiğinda sayaç başlangıç değeri okunur, daha sonra ortadaki kod bloğu çalıştırılır, kod bloğundan sonra Next'e gidilir. Next, sayacın sayaç bitiş değerine eşit olup olmadığını  kontrol eder, eğer değer sayaç bitiş değerine eşit değilse Next çalışma yönünü For'a döndürür. Sayaç değeri 1 artırılır, yine ortadaki kod bloğuna gidiler. Kod bloğu çalıştırıldıktan sonra Next'e gelinir. Yine sayacın bitiş değerine eşit olup olmadığı kontrol edilir. Bu işlem aynı şekilde sayacın, sayaç bitiş değerine eşit olmasına kadar devam ettirilir. Eğer ki sayaç değeri sayaç bitiş değerine eşitse, döngüden çıkılarak Next'ten sonraki satıra gidilir. Tabi Step değeri tanımlanmamış ise. Eğer Step değeri tanımlanır ise başlangıç değeri bir kez çalıştırıldıktan sonra, Next'ten sonra For'a gelinince, sayaç değeri 1 yerine Step değeri kadar artırılır. Bu işleme sayaç değeri, sayaç bitiş değerine eşit yada büyük oluncaya kadar her defasında Step değeri kadar artırılarak devam edilir.

Döngülerin kıymetini anlamak için şöyle bir örnek işe yarayabilir.
1'den 10 kadar hücrelere sayıları yazmak istersek şöyle bir yöntem deneyebiliriz.

Range("A1").Value = 1
Range("A2").Value = 2
Range("A3").Value = 3
Range("A4").Value = 4
Range("A5").Value = 5
Range("A6").Value = 6
Range("A7").Value = 7
Range("A8").Value = 8
Range("A9").Value = 9
Range("A10").Value = 10

Ancak bu işlemin 10'a kadar değilde çok daha büyük bir rakama kadar devam ettiği düşünülecek olursa, bu oldukça zahmetli bir işlem olurdu. İşte burada devreye döngüler giriyor. Bu kadar kod yerine çok daha az bir kod ile aynı işlem yapılabilir. 

For i = 1 To 10
   Range("A" & i).Value = i
Next i

For-Next döngüsünün farklı kullanımlarıda mevcuttur. İç içe For-Next döngüsü, If … Then yapısı ile kullanımı ve Exit For gibi kullanımlarıda vardır. 
İç içe For-Next döngüsünde; ilk olarak I değişkenli döngü başlatılarak sayaç ilk değerini alır, sonra J döngüsüne gidilir ve sayaç ilk değerini alır, oradan da K döngüsüne gidilip ilk değerini aldıktan sonra, ortadaki kod bloğu çalıştırır, ancak burada K döngüsünden çıkılmayıp sayaç bitiş değerine kadar döngüye devam edilerek ortadaki kod bloğu her defasında çalıştırır. Sayaç bitiş değerine gelindiğinde K döngüsünden çıkılıp J döngüsüne  gidilir, burada J döngüsü 1 artırılarak tekrar K döngüsüne gelinir ve sayaç başlangıç değerinden bitiş değerine kadar ortadaki kod bloğu yine her defasında çalıştırılır. K döngüsü sayaç bitiş değerinden sonra tekrar J döngüsüne gidilip, J döngüsü sayacı 1 artırılarak bu işlem J döngüsü sayaç bitiş değerine ulaşılıncaya kadar tekrarlanır. J döngüsü sayaç bitiş değerine ulaşıldıktan sonra J döngüsünden çıkılarak I döngüsüne gelinir. Burada I döngüsü sayaç değeri 1 artırılarak tekrar sırasıyla bundan öncekinde anlatıldığı gibi J ve K döngüleri çalıştırılır. Bu işlem I döngüsü sayaç bitiş değerine ulaşılıncaya kadar tekrarlanır. I döngüsü sayaç bitiş değerine ulaşılınca I döngüsünden çıkılıp, I döngüsü Next'inden sonraki satıra gidilerek mevcut kodlar çalıştırılır.

For I = 1 To 10 
    For J = 1 To 10 
         For K = 1 To 10 
              ..... 
         Next K 
    Next J 
Next I

For-Next döngüsünün If-Then şart yapısı ile kullanımında ise her döngüde If bloğunda gerekli şartın sağlanıp sağlanmadığı kontrol edilir, eğer şart sağlanıyorsa Tekrar Edilmesi İstenilen Kod Bloğu çalıştırılır. Eğer burada isteniyorsa, Exit For ile döngü sonlandırılarak For-Next döngüsünden çıkılır. Tabi burada Exit For, kod yapısındaki gerekliliğe, yani istenilen işe/amaca ulaşıldıktan sonra döngüden çıkılması gerektiğinde kullanılır.

For Sayaç = Başlangıç Değeri To Sayaç Bitiş Değeri [ Step Sayaç Artış Değeri]
    If .... Then   
         [ Tekrar Edilmesi İstenilen Kod Bloğu ]
         [ Exit For ]
    End If
Next Sayaç





Arama
Kısayollar
Topluluk Faaliyetleri
En Çok Cevap Yazan Üyeler (Son 30 Gün)
Topluluk
En Popüler Cevaplar (Son 30 Gün)
Cevaplar
Forum İstatistikleri
TOPLAM DÜN
Sorular: 2 0
Gönderiler: 3 0
Kullanıcılar: 4 0