Linkleri görebilmek ve üye ayrıcalıklarından faydalanabilmek için ücretsiz kayıt olun.
DÖNGÜLERProgramlama temellerinden birisi de döngülerdir. Döngüler işlemlerin yinelenmesi anlamına gelir. Programlama dillerinde döngüler genelde aynı işi birden fazla yaptırmak amacıyla işlemi istenilen miktarda tekrarlamak için kullanılır. Yada belli aralıklarda bir şey arattırmak için veya belli aralığa bir şeyler eklemek için aynı işlemi tekrar tekrar yapmaktan kurtulmak için. Örnek olarak bir veri tabanı dosyasındaki kayıtların birer birer okunarak ekrana listelenmesi gibi. VBA iki ana grupta döngü tipi vardır. Bunlar;
• Sayaçlı Döngüler ( For –Next )
• Koşullu Döngüler ( Do while – Loop, While – End))
Koşullu döngüler belli bir koşul yerine gelene dek yineleme işlemi yaparlar. Sayaçlı döngüler ise işlemleri belirtilen sayı kadar yenilerler.
Sayaçlı Döngüler---For...Next DöngüsüBir grup deyimi belli sayıda çalıştırarak ( başlangıç değerinden bitiş değerine kadar) döngü oluşturur.
Dim sayac As Integer
For [sayac] = başlangıç değeri to bitiş değeri [ Step artım]
Komutlar
Next [sayac]
Bu döngü sayac başlangıç değerinden bitiş değerine kadar çalıştırılır. Sayaç başlangıç değerinde iken döngü içindeki komutlar işletilir. Next ifadesine gelindiğinde tekrar For satırına gelinir. Sayac degeri artım kadar artırılır. Eğer Sayaç değeri Bitiş değerini geçmiş ise Next adımından sonraki adım işletilir. Burada step değerine pozitif veya negatif bir değer verilebilir. Eğer negatif değer verilirse sayaç her seferinde 1 azaltılır. Step adımını vermezsek bu pozitif 1 (+1) anlamındadır ve her adımda sayac bir artırılacaktır.
For Next Döngüsünün yapısının şema ile incelenmesiBiz iç içe For Next döngüleri de kurabiliriz. Ancak burada şuna dikkat edilmelidir. En son başlatılan For döngüsü ilk önce bitirilmelidir.
For sayac1 = başlangıç değeri1 to bitiş değeri1 [ Step artım1]
Komutlar1
For sayac2 = başlangıç değeri2 to bitiş değeri2 [ Step artım2]
Komutlar2
Next sayac2
Next sayac1
Burada en son başlatılan For döngüsü ilk önce bitirilmezse hata oluşacaktır. Yani aşağıdaki şekilde bitirilseydi hata verecekti.
Next sayac1
Next sayac2
İç içe döngülerin yapısının şema ile incelenmesi Döngülerde dikkat edilmesi gereken bazı kurallar:
• Başlangıç değeri bitiş değerinden büyük ise döngüye girilmez.
• Eğer döngüyü azalarak çalışmasını istiyorsanız step değerine – değer yazmanız gerekir. Bu durum da ise başlangıç değeri, bitiş değerinden küçükse döngüye girilmez.
• Sayaç değişkenine döngü içerisinde genelde yeniden bir atama yapılmaz. Bu durumlarda sonsuz bir döngüye neden olabilirsiniz.
• Eğer Programınız sonsuz döngüye girdi ise ESC yada CTRL – BREAK tuşuna basarak durdurabilirsiniz.
Neticede bilgisayar, kullanıcının istediği bir değeri arayıp bulan ve onu istenen biçimde sunan bir araç olduğundan arama ve bulma oldukça önemli. Sadece bu amaçla değil ama istenen bir koşula ulaşma veya belli bir şartı yaratma için de kullanılabilecek bu yapılardan For..Next, çevrim sayısı belirli koşullar için kullanılır.
Örnek 1: 1 den 20 ye kadar olan sayıların toplamını alan ve her toplamı ekranda gösteren programın kodlarını yazalım.
- Kod: Tümünü seç
Private Sub CommandButton1_Click()
Dim topla
For i = 1 To 20
topla = topla + i
MsgBox topla
Next i
End Sub
Örnek 2: Belirlenen belli bir sayıda ki sayıyı toplayarak bize sonucu bir mesaj kutusunda görüntüleme.
- Kod: Tümünü seç
Private Sub CommandButton1_Click()
Dim Sayi As Integer
Dim Sayac As Byte, SayiMiktari As Byte
SayiMiktari = Val(InputBox("Sayi Miktarını Giriniz"))
Sayi = 0
For Sayac = 1 To SayiMiktari
Sayi = Sayi + Val(InputBox(Sayac & ". sayıyı giriniz"))
Next Sayac
MsgBox "Girilen " & SayiMiktari & " tane sayının toplamı=" & Sayi
End Sub
Yalnız burada "Val" fonksiyonundan bahsetmek istiyorum bu fonksiyon String tipindeki verileri sayısal veriye çevirmek için kullanılır eğer bu fonksiyonu kullanmasaydık örneğin program bize 1+2+3 ün sonucunu 6 yerine 123 olarak verirdi.
Örnek 3: Bir örnek aşağıda 5 satır ve 10 kolonluk bir matrisin bütün elemanlarına -1 değeri verme için kullanılmıştır.
Dim matris(1 To 5, 1 To 10) 'Veri tipi variant kabul ediliyor
For i = 1 To 5
For j = 1 To 10
matris(i, j) = -1
Next j
Next i
Burada i ve j sayaç değeri, 1 başlangıç, 5 satırların, 10 kolonların bitiş sayısıdır. Adım sayısı veya kaçar kaçar sayaç artışı yapılacağı belirtilmediğinden bütün matris elemanları teker teker ele alınmıştır Yukarıdaki örnekte iç içe 2 döngü vardır. Döngü uygulamanın içinden çıkması için gereken şart gerçekleşinceye kadar devam edeceğinden bu şekilde kabaca belli bir süre bekleme de yaptırabilir veya EOF dediğimiz(End of File) son kayıta ulaşıncaya kadar mevcut kayıtları istediğiniz şart açısından kontrol ettirebilirsiniz.
Step Deyiminin KullanılışıStep deyimi döngü sayacının belirtilen değerde artması yada azalması için kullanılır.
For j = 1 to 10 step 2
'....komutlar
Next
yada
For sayi = 50 to 2 step -2
'....komutlar
Next