VBA Döngüler – I


Döngüler VBA dilinde ve diğer yazılım dillerinde en çok kullanılan ve en önemli konulardan bir tanesidir. Döngüler belirli bir mantıksal düzene sahip bir işlemi birden çok defa yaptırmak istediğimizde bizi uzun kod blokları yazmaktan kurtarır. Bu konuda anlatacağımız döngüler:

  1. For …. Next
  2. İç içe For Döngüsü
  3. Do While …. Loop
  4. Do Until …. Loop
  5. Do …. Loop While
  6. Do …. Loop Until

1.For …. Next


Sub fordongusu()

Dim i As Integer

For  i = 1   To 10 'başlangıç ve bitiş değerleri

Cells(i, 1) = i  'i nin her yeni değerinde ilgili hücreye i değerini yazdır

Next i  'i nin değerini 1 arttır taki i değeri 10 olana kadar

End Sub

 

DONGULER
For Next Döngüsü

Kodu okumaya çalışalım:

i isminde bir değişken tanımla bu değişken ilk olarak 1 değerini alsın Cells(1,1) ‘e 1 yazsın, Next i ye geldiğimden i nin değerini 1 arttırsın,

i=2 oldu Cells(2,1)=2 oldu ve değeri yine 1 arttı,

.

.

.

i=10 cells(10,1)=10 artık i’nin değerini 1 arttırdığımda 11 olacak ve döngüm i=10’a kadar olduğu için döngü bitecek.

Peki i değerini 1 er birer değil farklı değerlerde arttırmak istersem:

Bu durumda step ifadesini kullanıyorum ve arttırmak istenilen değeri step in yanına yazıyorum.


Sub fordongusu()

Dim i As Integer

For i = 1 To 10 step 2

Cells(i, 1) = i 'i nin her yeni değerinde ilgili hücreye i değerini yazdır

Next i 'i nin değerini 2 arttır taki i değeri 10 olana kadar

End Sub

 

DONGULER
For Döngüsü Step Kavramı

2.İç içe For Döngüsü

Yukarıdaki görüntüyü 3 sütun boyunca elde etmek istediğimiz düşünelim, yani döngümüz 3 defa çalışacak her bir çalışmasında bir yan sütunu dolduracak.


Sub icicefordongusu()

Dim i As Integer

Dim s As Integer

For s = 1 To 3 's nin değerini 1 ver

For i = 1 To 10

Cells(i, s) = i 'i nin her yeni değerinde ilgili hücreye i değerini yazdır, sütun numaram s=1 (ilk döngüde)

Next i 'i nin değerini 1 arttır taki i değeri 10 olana kadar

Next s 's'nin değerini 1 arttır

End Sub

Not: Eğer i nin bitiş değerini integer değerinin alabileceği maximum değerin üzerinde verirsek overflow hatası alırız. bununla karşılaşmamak için yüksek bitiş değerine sahip döngülerde i değerini long olarak tanımlamayı unutmayınız.

DONGULER
İç İçe For Döngüsü

3.Do While …. Loop

Do While döngüsü verilen koşul sağlandığı süre boyunca döngüyü çalıştırır. For döngüsünden farkı Do While döngüsünde i değerini döngü içerisinde kendimiz arttırmalıyız.

önemli: Eğer i değerini arttırmayı unutursak i değeri hep 1 olacak ve koşul sağlandığı için sonsuz döngüye gireceğiz.


Sub dowhiledongusu()

Dim i As Integer

i = 1 'baslangıc i degeri verilmeli

Do While i < 11 ' i 11 den küçük olduğu sürece döngüyü çalıştır

Cells(i, 1).Value = i ' hücreye i değerini yazdır

i = i + 1 'i yi 1 arttır

Loop

End Sub

4.Do Until …. Loop

Do Until ise koşul sağlanana kadar döngüyü çalıştırır koşul sağlandığında döngü durdurulur.


Sub dountildongusu()

Dim i As Integer

i = 1 'baslangıc i degeri verilmeli

Do Until  i >= 10  ' i 10 dan büyük olana kadar döngüyü çalıştır. 

Cells(i, 1).Value = i ' hücreye i değerini yazdır

i = i + 1 'i yi 1 arttır

Loop

End Sub

5.Do …. Loop While

Do While ile aynı mantıkla çalışır. 2 temel farkı vardır. While koşulu Looptan sonra gelir. Ve koşulu en sonda kontrol ettiği için koşul sağlansa da sağlanmasa da döngü en az 1 kere çalışır.


Sub dowhiledongusu()

Dim i As Integer

i = 1

Do 

Cells(i, 1).Value = i

i = i + 1

Loop While  i< 11

End Sub

Aşağıdaki örnekte i=12 koşulu sağlamıyor, koşula ulaşana kadar döngü bir defa çalıştı i<11 koşulunu sağlamadığını görünce döngüyü bitirdi.Ancak A12 hücresine verdiğimiz koşulu sağlamasada 12 değeri yazdırılmış oldu.

DONGULER
6.Do …. Loop Until

Do Until ile aynı mantıkla çalışır. 2 temel farkı vardır. Until koşulu Looptan sonra gelir. Ve koşulu en sonda kontrol ettiği için koşul sağlansa da sağlanmasa da döngü en az 1 kere çalışır.


Sub dountildongusu()

Dim i As Integer

i = 1

Do 

Cells(i, 1).Value = i

i = i + 1

Loop Until  i> 10

End Sub

 

Reklamlar

VBA Döngüler – I” üzerine bir yorum

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s