İç içe For..Next döngüsü kullanımı
For dögüsü yapılacak işleme göre iç içe yazılarak kullanılabilen bir yapıdır. Burada dikkat edilmesi gereken nokta döngünün bir başka kod yapısı ile blok yapısının ihlal edilmemesidir. Her For döngüsü Next ile biter ve döngü içerisinde kullanılan diğer blok yapılar if, else, case vb. kesinlikle Next cümlesinden önce bitmelidir. Özetle modüler bir biçimde kod yazmalısınız döngü içerisinden döngü dışına dallanma yapmamaya çalışmalısınız. Şimdi basit olarak iç içe iki For döngüsü nasıl yazılır bir bakalım.
Dim i as Integer, k as integer
For i=1 to 10
'diğer işletilecek komutlar
For k=1 to 5
'diğer işletilecek komutlar
Next [k]
'diğer işletilecek komutlar
Next [i]
Burada Next satırından sonra yazılan i ve k degerleri isteğe bağlıdır yazmasanız da olur. Yazdığımız bu döngüde i nin her değeri için içteki k döngüsü çalışacaktır yani i nin 1 değeri için k defa, i nin 2 değeri için k 5 defa...inin 10 değeri için k, 5 defa çalışacaktır. Çarpma yoluyla sayacak olursak i x k = 10 x 5 = 50 defa toplam döngü çalışmış olacaktır. Şayet iç içe 3 döngü yazmış olsaydık:
Dim i as Integer, k as integer, j as integer
For i=1 to 10
'diğer işletilecek komutlar
For k=1 to 5
'diğer işletilecek komutlar
For j=1 to 8
'diğer işletilecek komutlar
Next [j]
'diğer işletilecek komutlar
Next [k]
'diğer işletilecek komutlar
Next [i]
Burada ise i x k x j defa döngü dönecektir yani 10 x 5 x 8 = 400 defa döngü işlemi yapılacaktır. İç içe kullanım örneklerini daha da çoğaltabiliriz. Lakin bizim burada dikkat etmemiz gereken nokta döngü kırma işlemi olacaktır. Normalde Exit For deyimi bizi sadece kullanıldığı döngünün dışına taşıyacaktır. Bu durumda kullanıldığı yere göre Exit For deyimi bizi tamamen döngü dışına çıkarabileceği gibi sadece bir üst döngüye de taşıyabilir.
Dim i as Integer, k as integer, j as integer
For i=1 to 10
For k=1 to 5
For j=1 to 8
'Exit For burada kullanılırsa k döngüsüne çıkılır
Next [j]
'Exit For burada kullanılırsa i döngüsüne çıkılır
Next [k]
'Exit For burada kullanılırsa döngü işleminden çıkılır
Next [i]
Evet şimdi isterseniz iç içe iki adet döngü kullanarak bir çalışma sayfasında çarpım tablosu oluşturlan kodları yazalım.
-
Öncelikle bir Excel dokümanı oluşturup kaydedin. Sonrasında Araçlar>Makro>Güvenlik komutları ile ekrana gelen pencerede Makro güvenliği sekmesinde Düşük seçemeğini işaretleyerek Tamam düğmesi ile onaylayın.Kaydet düğmesine basıp dokümanı kapatıp yeniden açın.
-
.Sonrasında Görünüm > Araç çubukları ile ekrana gelen listeden Visual Basic araç çubuğunu işaretleyin. Bu araç çubuğunda tasarım modu (Şekil-2 / 3 numara) düğmesine basın.
-
Yine Visual Basic araç çubuğunda yer alan Denetim Araç Kutusu düğmesine (Şekil-2 / 2 numara) basın ve kullanabileceğiz ocx nesnelerini görüntüleyin. Bunların arasından Komut düğmesi nesnesini tıklayın ve sonrasında farenin sol tuşunu basılı tutarak çalışma sayfası üzerinde sürükle bırak yönetimi ile makul büyüklükte 3 adet düğme çizin. Sonrasında bu düğmelerin üzerinde farenin sağ tuşuna basın ekrana gelen pop-up mönüden Özellikler/Properties tıklayın ve sırasıyla bu düğmelerin Caption özelliklerini TABLO YAP, KAYDET KAPAT ve KAPAT yapın. Sonrasında da bu düğmelerin name özelliklerini sırasıyla btnCalistir, btnKaydetCik ve btnKapat yapın.
-
Veri giriş işlemlerini tamamladıktan sonra Klavyeden ALT+F11 tuşlarına basarak VBA kod editörünü açıyoruz. Burada (şayet ekrana gözükmüyorsa) Project Explorer penceresini ekrana getirmek için CTRL+L tuşlarına basıyoruz. Sonrasında Sayfa1 i çift tıklıyoruz ekrana gelen kod penceresine aşağıda verilen kodları yazıyoruz
Kaynak kodlar
Private Sub btnCalistir_Click()
Dim ic As Integer, dis As Integer, satir As Integer, sutun As Integer
sutun = 0: satir = 0
'A ile AC arasında kalan tüm sütunların içerikleri siliniyor.
Sayfa1.Range("A:AC").ClearContents
For dis = 1 To 10
For ic = 1 To 10
Sayfa1.Cells(ic + satir, sutun + 1) = dis
Sayfa1.Cells(ic + satir, sutun + 2) = "x"
Sayfa1.Cells(ic + satir, sutun + 3) = ic
Sayfa1.Cells(ic + satir, sutun + 4) = "="
Sayfa1.Cells(ic + satir, sutun + 5) = ic * dis
Next
sutun = sutun + 6
If dis = 5 Then
satir = satir + 11
sutun = 0
End If
Next
End Sub
Private Sub btnKapat_Click()
Application.DisplayAlerts = False
Application.Quit
End Sub
Private Sub btnKaydetCik_Click()
ThisWorkbook.Save
Application.Quit
End Sub
Yardımcı olması dileğiyle