Makale For ... Next

Bu Makale Yararlı Oldu mu?

  • Evet

  • Hayır


Sonuçlar yalnızca oylamadan sonra görülebilir.
Belirli bir komut parçasının belli şartlar gerçekleşinceye kadar defalarca çalışması gerekebilir.
Çalışma sayısının belli olduğu durumlarda For döngüleri kullanılır.
Bu döngülerden bir tanesi olan For ... Next döngü bloğunu bu makalede sizlere anlatmaya çalışacağım.
Bu döngünün birçok kullanım yeri vardır, fakat ağırlıklı olarak satır ve sütunlarda, yani hücreleri denetlemek için kullanılır.

Bu bir sayaçlı döngüdür, yani ne kadar döneceği bellidir ve başlangıç ve bitiş değeri kısımlarında belirtilir.
Aslında bu döngü, hayatımızda devamlı var olan bir döngüdür. Bizler de bir yaşam döngüsü içerisinde, doğar, büyür ve ölürüz.
Ne kadar süre yaşayacağımız Allah katında bellidir.
Ayrıca bu döngüyü, sürekli kullandığımız kolumuzdaki, duvarımızdaki, masamızdaki saat örneğinde, hatta tüm zaman dilimlerinde de görüyoruz.
Örneğin; 1 gün 24 saattir öyle değil mi? 1.2.3.4.5.6.7...24 şeklinde 1'den 24'e kadar ilerleyen bir numara olarak düşünün bunu.
For .. Next döngüsü de tam olarak bu şekilde çalışmakta.
Şimdi bu döngüyü detaylıca bir inceleyelim.


Yazım kalıbı Syntax aşağıdaki gibidir..
Mavi renkli kısımlar sabittir.
Kırmızı renkli kısımlar değişkendir.
Yeşil renkli kısım, isteğe bağlı olarak artırma veya eksiltme olarak kullanılır.

For Sayac = Başlangıç_Değeri To Bitiş_Değeri [Step Artıma/Eksiltme]
Komutlar
Next Sayac


Yukarıdaki yazım kalıbını kodda bu şekilde kullanıyoruz;
PHP:
Sub ExcelTurkey()
    For i = 1 To 12
        'buraya döngü sırasında yapılacak işlem kodları yazılır.
    Next i
End Sub
Bu kodda; 1'den 12'ye kadar dön ve dönerken 1 ile 12 arasındaki sayıları da i değişkenine ata diyoruz. i değişkeni, kalıbımIzdaki Sayac'ı ifade eder.
i yerine herhangi bir isim/harf/kelime vs. verebilirsiniz.

Bu döngüyü 1'den 12'ye kadar sıralı bir şekilde tek tek artırmak yerine ikişer ikişer artırmak için Step deyimini kullanabilirsiniz.
Yani döngümüz 1.2.3.4.5.6....12 şeklinde değil de, 1.3.5.7.9.11 şeklinde ilerlesin istediğimizi varsayıyorum.
O zaman aynı koda Step kısmını bu şekilde ilave edebilirsiniz.
PHP:
Sub ExcelTurkey()
    For i = 1 To 12 Step 2
        'buraya döngü sırasında yapılacak işlem kodları yazılır.
    Next i
End Sub
Üçer üçer artırmak için de Step 3 yazabilirsiniz.

Bu arada, For .. Next döngüsünü artan yönde, yani ileriye doğru kurabildiğiniz gibi, geriye doğru da kurabilirsiniz.
Yani 1 To 12 yerine 12 To 1 diyerek, döngüyü geriye doğru da çalıştırabilirsiniz. Fakat o zaman Step kısmını mecburen kullanmak zorundasınız.
Şimdi buna örnek olarak bu kodları verebiliriz..
PHP:
Sub ExcelTurkey()
    For i = 12 To 1 Step -1
        'buraya döngü sırasında yapılacak işlem kodları yazılır.
    Next i
End Sub
İlaveten, iç içe For .. Next döngüleri kurulabilir.
Dikkat edeceğiniz hususlardan biri de; önce içteki döngüyü tamamlar, daha sonra dıştaki döngüye geçer.
Bunu yine dakika ve saniye mantığında düşünebilirsiniz. Nasıl ki; saniye 60 kez dönüp de dakika 1 artıyorsa bu döngü de aynı mantıkla işler, içteki belirtilen sayı kadar dönüp, sonra dıştaki döngü 1 (belirtilen step kadar) artırılır.

Şimdi bu iç içe döngüye bir örnek verelim..
Bu örnekte şöyle yapacağız; 10 satır ve 5 sütunluk hücre aralığına, yani; A1:E10 hücre aralığına Excel yazdıracağız.
Bize lâzım olan kodumuz bu;
PHP:
Sub ExcelTurkey()
    For i = 1 To 10
        For a = 1 To 5
            Cells(i, a) = "Excel"
        Next a
    Next i
End Sub
Gördüğünüz gibi iç çe iki For ... Next döngüsü yazdık. Bu prosedürü F8 ile adım adım çalıştırdığınızda, dıştaki döngünün 1 kez dönüp, içteki döngünün de 5 kez döndüğünü ve sonra dıştaki döngünün 1 artırılıp içteki döngünün yine 5 kez döndüğünü görürsünüz, bu şekilde dıştaki döngü bitene kadar devam eder. İçteki döngüde kullandığımız değişkenimizin adı a idi ve biz bu a değişkenini Cells Cells(satır_no, sütun_no) içerisinde sütun kısmına yazdığımız için, ilk önce 1. satırdaki 5 sütunu doldurmuş olduk, sonra 2. satıra geçip 5 sütunu dolduracak şekilde ilerledik.

Bu görselde net olarak nasıl çalıştığını görebilirsiniz.

fordongusu.gif


Daha önce de belirttiğim gibi, For döngüsünün birçok kullanım yeri vardır.
Kullanımı ile ilgili aşağıda vereceğim bazı kodlar sizin için faydalı olacaktır..

For döngüsüyle tüm sayfa isimlerini MsgBox ile döndürme..
PHP:
Sub ExcelTurkey()
    For i = 1 To Sheets.Count
        MsgBox Sheets(i).Name
    Next i
End Sub
For döngüsüyle metin içerisindeki sayı ve harfleri ayırmak..
PHP:
Sub ExcelTurkey()
    metin = "Excel2018Turkey"
    For i = 1 To Len(metin)
        If IsNumeric(Mid(metin, i, 1)) = True Then
            sayi = sayi & Mid(metin, i, 1)
                Else
            harf = harf & Mid(metin, i, 1)
        End If
    Next i
    MsgBox "Metin: " & metin & Chr(10) & "Sayılar: " & sayi & Chr(10) & "Harfler: " & harf
End Sub
For döngüsüyle UserForm'daki TextBox'ların içini temizlemek..
PHP:
Private Sub CommandButton1_Click()
    For i = 1 To 4
        Controls("TextBox" & i) = Empty
    Next i
End Sub
 
Son düzenleme:
Admin

Yorumlar

Üst Alt