For …Next
Vba ile ilgilenmeye ve döngülerle çalışmaya başladığınızda ilk karşınız çıkan örnektir. Mantığı çok basittir. For i= Başlangıç to Bitiş ile döngünün kaç kere döndürüleceği belirlenir. Belirlenen sayıda işlem tekrarlanır.
Sub Dongu_01()
Dim i As Byte
For i = 1 To 10
Cells(i, 1) = i
Next
End SubFor Each …Next
Özelliği döngüde Alan tanımlaması yapmasıdır. Tanımlama yapılıp, işlemin yapılacağı alanın belirtilmesi For…Next döngüsüne oranla performans artışı sağlayacaktır.
Sub Dongu_02()
Dim Alan As Range
For Each Alan In Range("A1:A10")
Alan.Value = i + 1
i = i + 1
Next
End SubDo While…Loop
Do ile başlayan döngüler, kriterlere göre işlem sayısını belirler. Bu döngüler birbirine çok benzer yapılardır. Farkları kriterlerin belirtildiği yerlerin değişmesidir. Bu döngü yapısında belirtilen kriter Do While ile i değeri 10 sayısından küçük veya eşit oluncaya kadar işlemler yapılsın. Yani kriter doğruysa işlemleri yap demektir.
Sub Dongu_03()
Dim i As Byte
i = 1
Do While i <= 10
Cells(i, 1) = i
i = i + 1
Loop
End SubWhile…Wend
Do While…Loop döngüsüyle aynı yapıdadır. Bir farkı yoktur. Do , loop gibi tanımlamalarla kafa karıştırmadığı için benim tercihimdir.
Sub Dongu_04()
Dim i As Byte
i = 1
While i <= 10
Cells(i, 1) = i
i = i + 1
Wend
End SubDo … Loop while
Do While…Loop döngüsünden farkı , orada kriter doğru ise işleme devam et diyorduk. Burada ise kriter doğrulanana kadar işleme devam etmesini bildiriyoruz. Sadece kriterin yerini değiştirdik. Mantığının çok farklı olmadığını görebilirsiniz.
Sub Dongu_05()
Dim i As Byte
i = 1
Do
Cells(i, 1) = i
i = i + 1
Loop While i <= 10
End SubDo Until…Loop
Do While…Loop döngüsünden küçük bir farkı var. Bildiğiniz gibi While sözcüğünün Türkçe karşılığı “.. iken” olarak çevrilebilir. Yani “öyle iken”, “böyle iken” . Until sözcüğünün Türkçe karşılığı “…. Kadar” olarak çevrilebilir. Yani “oluncaya kadar” , “yapıncaya kadar” gibi. Bu açıklamalara göre bu döngüde verdiğimiz komutta i değeri 10 sayısından büyük olana kadar işleme devam et diyoruz. Dolayısıyla diğer örneklerde kullandığımız i<=10 tanımı yerine , i>10 tanımı bizim için yeterli oluyor.
Sub Dongu_06()
Dim i As Byte
i = 1
Do Until i > 10
Cells(i, 1) = i
i = i + 1
Loop
End Subalıntıdır...(kaynak:excelvba.net)