- Katılım
- 25 May 2018
- Mesajlar
- 1,609
- En iyi yanıt
- 14
- Puanları
- 113
- Konum
- İstanbul
- Web sitesi
- excelarsivi.com
- Ad Soyad
- Murat OSMA
- Office Vers.
- Microsoft 365 TR+EN
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ı [SUP]Syntax[/SUP] 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;
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.
Üç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..
İ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;
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
Bu görselde net olarak nasıl çalıştığını görebilirsiniz.

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..
For döngüsüyle metin içerisindeki sayı ve harfleri ayırmak..
For döngüsüyle UserForm'daki TextBox'ların içini temizlemek..
Ç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ı [SUP]Syntax[/SUP] 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
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
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
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.

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: