Döngüler talimatları birkaç kez tekrarlar ve çok zaman kazandırabilir.
Excel VBA'de aşağıdaki döngü türleri mevcuttur:
Aşağıdaki kod, A sütununun her hücresine (1'den 12'ye kadar) bir sayı dizisi ekler:
Sub while_loop() Cells(1, 1) = 1 Cells(2, 1) = 2 Cells(3, 1) = 3 Cells(4, 1) = 4 Cells(5, 1) = 5 Cells(6, 1) = 6 Cells(7, 1) = 7 Cells(8, 1) = 8 Cells(9, 1) = 9 Cells(10, 1) = 10 Cells(11, 1) = 11 Cells(12, 1) = 12 End Sub
Bu kod çok tekrarlanıyor...
Ardışık sayıları 12 yerine yüzlerce hücreye eklemek zorunda kaldığımızı hayal edin... Artık döngülerin neden çok yararlı olduğunu anlıyorsunuz.
Boş bir While döngüsüne örnek verelim:
Sub while_loop() While [durum] 'Talimatlar Wend End Sub
Koşul doğru olduğu sürece döngüdeki ifadeler çalışmaya devam edecektir (ancak sonsuz bir döngü oluşturmamaya dikkat edin).
Aşağıda daha önce tartışılan ve While döngüsüne dönüştürülen döngü makrosu bulunmaktadır:
Sub while_loop() Dim num As Integer num = 1 'Başlangıç numarası (bu durumda satır numarası ve ayarlanan değerdir) While num <= 12 'Num değişkeni 12'den küçük veya ona eşit olduğu sürece talimatlar yürütülecektir. Cells(num, 1) = num 'Numaralama num = num + 1 'Döngü her geçtiğinde sayı 1 artırılır Wend End Sub
Bu döngüyü bir makroda kullanarak, 12 yerine 400 kasete ihtiyacımız olursa tek yapmamız gereken 12'yi 400 ile değiştirmek olacaktır.
While Wend ile aynı şekilde çalışan bir döngü yazmanın başka bir yolu vardır (While komutunun içerdiği belirli bir koşul doğru olduğu sürece çalışır):
Sub do_while_loop() Do While [durum] 'Talimatlar Loop End Sub
Aşağıdaki sürüm, koşulun Do Loop döngüsünün sonuna yazılabileceğini gösterir; bu, talimatların tam olarak en az bir kez yürütüleceği anlamına gelir:
Sub do_while_loop() Do 'Talimatlar Loop While [durum] End Sub
Koşul yerine getirilirken döngü yapmak yerine, While'yi Until ile değiştirirsek döngüden koşula göre de çıkabiliriz:
Sub do_while_loop() Do Until [durum] 'Talimatlar Loop End Sub
Sub for_loop() For i = 1 To 5 'Talimatlar Next End Sub
For döngüsü burada 5 kez tekrarlanacaktır.
Bu döngü her tekrarlandığında i değişkeni otomatik olarak 1 artırılır:
Sub for_loop() For i = 1 To 5 MsgBox i Next End Sub
Aşağıdaki talimatı kullanarak For döngüsünden erken çıkmak mümkündür:
Exit For 'For döngüsünden çıkış
Bunu açıkça gösterecek bir örnek düşünelim:
Sub for_loop() Dim max_loops As Integer max_loops = Range("A1") 'A1 hücresinde tekrar sayısı sınırını belirledik For i = 1 To 7 'Beklenen döngü sayısı: 7 If i > max_loops Then 'A1 hücresi boşsa veya 7'den küçük bir sayı içeriyorsa tekrar sayısını azaltın Exit For 'Önceki koşul TRUE ise, döngüden çıkış For...loop End If MsgBox i Next End Sub
Diğer Exit operatörleri:
Exit Do 'Döngü çıkışı Do Loop
Exit Sub 'Prosedürden çıkış
Exit Function 'Çıkış işlevi