VBA'da, bir koşul karşılanana kadar (veya bir koşul doğru olana kadar) aynı görevi birden çok kez gerçekleştirmeniz gerektiğinde döngü kullanılır.
Bu öğreticide, Excel VBA'da Sonraki Döngü İçin'in nasıl kullanılacağını öğreneceksiniz.
VBA'yı kolay yoldan öğrenmekle ilgileniyorsanız, Çevrimiçi Excel VBA Eğitimi.
Excel VBA'da FOR NEXT Döngüsünü Kullanma
'Sonraki İçin' Döngüsü, döngüyü belirtilen sayıda çalıştırarak çalışır.
Örneğin 1'den 10'a kadar olan tam sayıları elle toplamanızı istesem, ilk iki sayıyı toplarsınız, ardından üçüncü sayıyı sonuca eklersiniz, dördüncü sayıyı da sonuca eklersiniz, bu şekilde…
değil mi?
Aynı mantık, VBA'daki For Next döngüsünde kullanılır.
Döngünün kaç kez çalışmasını istediğinizi ve ayrıca döngü her çalıştırıldığında kodun ne yapmasını istediğinizi belirtirsiniz.
İşte ilk 10 tam sayıyı eklemek için VBA'da kullanmanız gereken For Next döngü formatı.
i = 1 ila 10 için [sonuca i. pozitif tamsayıyı ekleyin] Sonraki i
Şimdi For Next döngüsünün nasıl kullanılacağına dair birkaç örneğe bakalım.
Örnek 1: İlk 10 Pozitif Tam Sayıyı Ekleme
For Next döngüsü kullanarak ilk 10 pozitif tamsayıyı ekleyecek kod aşağıdadır. Daha sonra bu sayıların toplamını gösteren bir mesaj kutusu görüntüleyecektir.
Sub AddNumbers() Dim Toplam As Integer Dim Count As Integer Toplam = 0 Count = 1 - 10 Toplam = Toplam + Count Sonraki Count MsgBox Toplam End Sub
Bu kodda, For Next döngüsüne girmeden önce Toplam değeri 0 olarak ayarlanır.
Döngüye girdikten sonra, her döngüden sonraki toplam değeri tutar. Yani ilk döngüden sonra Sayaç 1 olduğunda 'Toplam' değeri 1, ikinci döngüden sonra 3 (1+2) olur vb.
Ve son olarak, döngü sona erdiğinde ve Toplam ilk 10 pozitif tamsayının toplamına sahip olduğunda, bir MsgBox sadece sonucu bir mesaj kutusunda görüntüler.
Örnek dosyayı indirmek için buraya tıklayın
Örnek 2: İlk 5 Çift Pozitif Tam Sayıyı Ekleme
İlk beş çift pozitif tamsayıyı (ör. 2,4,6,8 ve 10) toplamak için, yalnızca çift sayıları dikkate alma ve tek sayıları yok sayma koşuluyla benzer bir koda ihtiyacınız vardır.
İşte bunu yapacak bir kod:
Sub AddEvenNumbers() Dim Total As Integer Dim Count As Integer Toplam = 0 Sayı için = 2 ila 10 Adım 2 Toplam = Toplam + Sayı Sonraki Sayı MsgBox Toplam End Sub
Count değerini 2'den başlattığımızı ve ayrıca For sözdiziminde Adım 2'yi kullandığımızı unutmayın.
Adım 2, koda, döngü her çalıştırıldığında 'Count' değerini 2 artırmasını söyler. Böylece Count değeri 2'den başlar ve döngü meydana geldikçe 4, 6, 8 ve 10 olur.
NOT: Bunu yapmanın başka bir yolu, döngüyü 1'den 10'a kadar çalıştırmak ve döngü içinde sayının çift mi yoksa tek mi olduğunu kontrol etmek olabilir. Bununla birlikte, bu durumda Step'i kullanmak, döngünün 10 kez değil, yalnızca 5 kez çalışmasını gerektirdiğinden daha verimli bir yoldur.
Örnek dosyayı indirmek için buraya tıklayın.
Örnek 3: Bir Alfanümerik Dizeden Sayısal Parçayı Alın
'Sonraki İçin' döngüsü, bir dizedeki her karakter arasında döngü yapmak için de kullanılabilir.
Örneğin, bir alfasayısal dizeler listeniz varsa, bundan sonraki sayıları çıkarmak için For Next döngüsünü kullanabilirsiniz (aşağıda gösterildiği gibi):
İşte VBA'da diğer çalışma sayfası işlevleri gibi kullanılabilecek özel bir işlev oluşturan bir kod.
Sayısal kısmı alfasayısal dizeden çıkarır.
Fonksiyon GETNUMERIC(Cl As Range) Dim i As Integer Dim Result as Long For i = 1 To Len(Cl) If IsNumeric(Mid(Cl, i, 1)) Then Result = Result & Mid(Cl, i, 1) End If Next i GetNumeric = Sonuç Bitiş Fonksiyonu
Bu kodda, döngünün çalıştırılma sayısı alfasayısal dizenin uzunluğuna bağlıdır (dizenin uzunluğunu bulmak için LEN işlevini kullanır).
Bu işlevi modül kodu penceresine koymanız gerekir ve ardından diğer herhangi bir çalışma sayfası işlevi gibi kullanabilirsiniz.
Örnek dosyayı indirmek için buraya tıklayın.
Örnek 4: Seçilen Aralıkta Rastgele Sayılar Alma
Seçili hücrelere hızlı bir şekilde rastgele sayılar girmek istediğinizi varsayalım, işte bunu yapacak kod.
Sub RandomNumbers() MyRange As Range Dim Dim i Integer, j As Integer Set MyRange = Seçim İçin i = 1 MyRange.Columns.Count İçin j = 1 To MyRange.Rows.Count MyRange.Cells(j, i) = Rnd Sonraki j Sonraki i End Sub
Bu, For Döngüsü içinde bir For döngüsünün kullanıldığı iç içe For Next döngüsüne bir örnektir.
10 satır ve 4 sütundan oluşan bir seçim yaptığınızı, i'nin değeri 1'den 4'e ve j'nin değeri 1'den 10'a kadar değiştiğini varsayalım.
İlk For döngüsü çalıştırıldığında, i'nin değeri 1'dir. Ardından, 10 kez (her satır için) çalışan ikinci For döngüsüne geçer.
İkinci For döngüsü 10 kez yürütüldüğünde, şimdi i değerinin 2 olduğu ilk For döngüsüne geri döner. Yine bir sonraki For döngüsü 10 kez çalışır.
İç içe geçmiş For Next döngüsü bu şekilde çalışır.
Örnek dosyayı indirmek için buraya tıklayın.
Aşağıdaki Excel VBA Eğitimlerini de Beğenebilirsiniz:
- Excel VBA'da Hücreler ve Aralıklarla Çalışma.
- Excel VBA'da Çalışma Sayfalarıyla Çalışma.
- VBA kullanarak Çalışma Kitapları ile çalışma.
- VBA'da IF Then Else İfadelerini Kullanma.
- Excel VBA Select Case.
- Excel'de Kullanıcı Tanımlı İşlev Oluşturma.
- Excel VBA Etkinlikleri - Kolay (ve Eksiksiz) Bir Kılavuz
- Excel'de Makro Nasıl Kaydedilir.
- Excel'de Makro Nasıl Çalıştırılır.
- Excel'de Eklenti Nasıl Oluşturulur.
- Excel Kişisel Makro Çalışma Kitabını Kullanarak Makro Nasıl Kaydedilir ve Yeniden Kullanılır.
- Yeni Başlayanlar İçin Yararlı Excel Makro Örnekleri.
- VBA'da InStr İşlevini Kullanma.