Excel VBA Döngüleri: Sonraki İçin, Yaparken, Yapana Kadar, Her Biri İçin (Örneklerle)

Excel ve VBA'dan en iyi şekilde yararlanmak için döngüleri nasıl verimli kullanacağınızı bilmeniz gerekir.

VBA'da döngüler, bir dizi nesne/değerden geçmenize ve bunları tek tek analiz etmenize olanak tanır. Ayrıca her döngü için belirli görevler gerçekleştirebilirsiniz.

İşte Excel'de VBA döngülerini kullanmanın basit bir örneği.

Bir veri kümeniz olduğunu ve tüm hücreleri çift sıra halinde vurgulamak istediğinizi varsayalım. Aralığı gözden geçirmek ve her hücre satırı numarasını analiz etmek için bir VBA döngüsü kullanabilirsiniz. Eşit olduğu ortaya çıkarsa, ona bir renk verirsiniz, yoksa olduğu gibi bırakırsınız.

Şimdi bu, elbette, Excel VBA'da döngü yapmak çok basittir (ve bunu koşullu biçimlendirme kullanarak da yapabilirsiniz).

Gerçek hayatta, Excel'de görevleri otomatikleştirmenize yardımcı olabilecek VBA döngüleriyle çok daha fazlasını yapabilirsiniz.

VBA döngülerinin yararlı olabileceği bazı daha pratik örnekler:

  • Bir dizi hücrede dolaşmak ve her hücreyi analiz etmek (içinde belirli bir metin bulunan hücreleri vurgulayın).
  • Tüm çalışma sayfalarını gözden geçirin ve her biriyle bir şeyler yapın (korumak/korumasını kaldırmak gibi).
  • Açık olan tüm çalışma kitaplarını gözden geçirin (ve her çalışma kitabını kaydedin veya etkin çalışma kitabı dışında tümünü kapatın).
  • Bir hücredeki tüm karakterler arasında dolaşın (ve sayısal kısmı bir dizeden çıkarın).
  • Bir dizideki tüm değerler arasında dolaşın.
  • Tüm çizelgeleri/nesneleri dolaşın (ve bir kenarlık verin veya arka plan rengini değiştirin).

Şimdi Excel VBA'da döngüleri en iyi şekilde kullanmak için, var olan farklı türler ve her birinin doğru sözdizimi hakkında bilgi sahibi olmanız gerekir.

Bu eğitimde, farklı Excel VBA döngüleri türlerini sergileyeceğim ve her döngü için birkaç örnek işleyeceğim.

Not: Bu, her VBA döngüsünü biraz ayrıntılı olarak ele almaya çalışacağım çok büyük bir eğitim olacak. İleride başvurmak üzere bu sayfayı yer imlerine eklemenizi tavsiye ederim.

VBA'yı kolay yoldan öğrenmekle ilgileniyorsanız, Çevrimiçi Excel VBA Eğitimi.

Sonraki Döngü için

'Sonraki İçin' döngüsü, belirtilen sayıda bir kod bloğundan geçmenizi sağlar.

Ö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.

For Next döngüsünün sözdizimi aşağıdadır:

Sayaç İçin = Baştan Sona [Adım Değeri] [Yürütülecek Kod Bloğu] Sonraki [sayaç]

For Next döngüsünde, döngüyü çalıştırmak için kullanılacak bir Sayaç (veya herhangi bir değişken) kullanabilirsiniz. Bu sayaç, bu döngüyü gerekli sayıda çalıştırmanıza izin verir.

Örneğin, ilk 10 pozitif tamsayıyı eklemek istersem, Sayaç değerim 1'den 10'a kadar olur.

For Next döngüsünün nasıl çalıştığını daha iyi anlamak için 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, 'Toplam' değişkeni ilk 10 pozitif tam sayının toplamına sahiptir.

Bir MsgBox daha sonra sonucu bir mesaj kutusunda görüntüler.

Örnek 2 - İlk 5 Çift Pozitif Tam Sayıyı Toplama

İ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 ' kullandığımızı unutmayın.Adım 2‘.

kullandığınızda '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.

Adım değeri de negatif olabilir. Bu durumda Sayaç daha yüksek bir değerde başlar ve belirtilen Adım değeri kadar azalmaya devam eder.

Örnek 3 - Seçili Hücrelere Seri Numarası Girme

For Next döngüsünü bir nesne koleksiyonunda (hücreler, çalışma sayfaları veya çalışma kitapları gibi) gezinmek için de kullanabilirsiniz.

İşte seçili tüm hücrelere seri numaralarını hızla giren bir örnek.

Sub EnterSerialNumber() Dim Rng As Range Dim Counter As Integer Dim RowCount As Integer Set Rng = Seçim RowCount = Rng.Rows.Count For Counter = 1 için RowCount ActiveCell.Offset(Counter - 1, 0).Value = Counter Sonraki Counter End Alt

Yukarıdaki kod önce seçilen satırların sayısını sayar ve ardından bu değeri RowCount değişkenine atar. Daha sonra döngüyü '1'den RowCount'a çalıştırıyoruz.

Ayrıca, seçim herhangi bir sayıda satır olabileceğinden, Rng değişkenini Seçime ayarladık ('Set Rng = Selection' satırı ile). Artık kodumuzdaki seçime atıfta bulunmak için 'Rng' değişkenini kullanabiliriz.

Örnek 4 - Etkin Çalışma Kitabındaki Tüm Çalışma Sayfalarını Koruyun

Etkin çalışma kitabındaki tüm çalışma sayfalarını gözden geçirmek ve çalışma sayfalarının her birini korumak (veya korumasını kaldırmak) için "Sonraki İçin" döngüsünü kullanabilirsiniz.

Bunu yapacak kod aşağıdadır:

Sub ProtectWorksheets() Dim i As Integer For i = 1 ActiveWorkbook.Worksheets.Count Worksheets(i).Protect Next i End Sub

Yukarıdaki kod, ActiveWorkbook.Worksheets.Count kullanarak sayfa sayısını sayar. Bu, VBA'ya döngünün kaç kez çalıştırılması gerektiğini söyler.

Her durumda, Ith çalışma kitabına atıfta bulunur (Worksheets(i) kullanarak) ve onu korur.

Bu aynı kodu, çalışma sayfalarının korumasını kaldırmak için de kullanabilirsiniz. Sadece çizgiyi değiştir Çalışma Sayfaları(i).Protect ile Çalışma Sayfaları(i).UnProtect.

İç İçe "Sonraki İçin" Döngüleri

Excel'de daha karmaşık otomasyon yapmak için iç içe "Sonraki İçin" döngülerini kullanabilirsiniz. Yuvalanmış bir "Sonraki İçin" döngüsü, "Sonraki İçin" döngüsü içinde bir "Sonraki İçin" döngüsü olduğu anlamına gelir.

Bunu nasıl kullanacağınızı bir örnek kullanarak göstereyim.

Diyelim ki sistemimde açık 5 çalışma kitabım var ve tüm bu çalışma kitaplarındaki tüm çalışma sayfalarını korumak istiyorum.

Bunu yapacak kod aşağıdadır:

Sub ProtectWorksheets() Dim i As Integer Dim j As Integer For i = 1 To Workbooks.Count For j = 1 To Workbooks(i).Worksheets.Count Workbooks(i).Worksheets(j).Protect Sonraki j Sonraki i End Sub

Yukarıdakiler, iç içe geçmiş bir For Next döngüsüdür, çünkü bir For Next döngüsünü diğerinin içinde kullandık.

For Next Döngülerinde 'EXIT For' İfadeleri

'Çıkış İçin' ifadesi, 'Sonraki İçin' döngüsünden tamamen çıkmanıza izin verir.

For Next döngüsünün belirli bir koşul karşılandığında bitmesini istediğiniz durumlarda kullanabilirsiniz.

A Sütununda bir dizi sayıya sahip olduğunuz ve tüm negatif sayıları kırmızı yazı tipiyle vurgulamak istediğiniz bir örneği ele alalım. Bu durumda, her bir hücreyi değeri için analiz etmemiz ve ardından yazı tipi rengini buna göre değiştirmemiz gerekir.

Ancak kodu daha verimli hale getirmek için önce listede negatif değerler olup olmadığını kontrol edebiliriz. Negatif değer yoksa, sadece koddan çıkmak için Exit For ifadesini kullanabiliriz.

Bunu yapan kod aşağıdadır:

Sub HghlightNegative() Dim Rng As Range Set Rng = Range("A1", Range("A1").End(xlDown)) Counter = Rng.Count For i = 1 To Counter If WorksheetFunction.Min(Rng) >= 0 Sonra Çık For If Rng(i).Value < 0 Sonra Rng(i).Font.Color = vbRed Sonraki i End Sub

İç içe geçmiş bir 'Sonraki İçin' döngüsü içinde 'Çıkış İçin' ifadesini kullandığınızda, yürütüldüğü döngüden çıkar ve Sonraki İçin döngüsünden sonra koddaki bir sonraki satırı yürütmeye devam eder.

Örneğin, aşağıdaki kodda, 'Çıkış For' ifadesi sizi iç döngüden çıkaracak, ancak dış döngü çalışmaya devam edecektir.

Sub SampleCode() için i = 1 ila 10 için j = 1 ila 10 için Çıkış Sonraki J İçin Sonraki i End Sub

Döngü Yaparken

Bir 'Do While' döngüsü, bir koşulu kontrol etmenize ve bu koşul karşılandığında (veya DOĞRU olduğunda) döngüyü çalıştırmanıza olanak tanır.

Do while Loop'ta iki tür sözdizimi vardır.

[While koşul] [Yürütülecek kod bloğu] Döngü yapın

ve

[Yürütmek için kod bloğu] Döngüsü yapın [While koşulu]

Bu ikisi arasındaki fark, ilkinde, herhangi bir kod bloğu yürütülmeden önce while koşulunun kontrol edilmesi ve ikinci durumda, önce kod bloğunun çalıştırılması ve ardından while koşulunun kontrol edilmesidir.

Bu, while koşulu False ise her iki durumda da kodun ikinci durumda en az bir kez çalışacağı anlamına gelir (kod bir kez yürütüldükten sonra 'While' koşulu kontrol edildiğinden).

Şimdi VBA'da Do While döngülerini kullanmanın bazı örneklerini görelim.

Örnek 1 - VBA kullanarak İlk 10 Pozitif Tam Sayıyı Ekleme

VBA'da Do while döngüsünü kullanarak ilk on pozitif tamsayıyı eklemek istediğinizi varsayalım.

Bunu yapmak için, bir sonraki sayı 10'dan küçük veya ona eşit olana kadar Do While döngüsünü kullanabilirsiniz. Sayı 1o'dan büyük olduğu anda döngünüz duracaktır.

İşte bu Do while döngüsünü çalıştıracak ve sonucu bir mesaj kutusunda gösterecek olan VBA kodu.

Sub AddFirst10PositiveIntegers() Dim i As Integer i = 1 Do while i <= 10 Result = Result + i i = i + 1 Loop MsgBox Result End Sub

Yukarıdaki döngü, 'i' değeri 11 olana kadar çalışmaya devam eder. 11 olur olmaz döngü biter (While koşulu False olur).

Döngü içinde, son değeri tutan bir Sonuç değişkeni kullandık Döngü tamamlandığında, bir mesaj kutusu 'Sonuç' değişkeninin değerini gösterir.

Örnek 2 - Mevcut Ay İçin Tarih Girin

Mevcut ayın tüm tarihlerini bir çalışma sayfası sütununa girmek istediğinizi varsayalım.

Bunu, aşağıdaki Do while döngü kodunu kullanarak yapabilirsiniz:

Sub EnterCurrentMonthDates() Dim CMDate As Date Dim i As Integer i = 0 CMDate = DateSerial(Year(Date), Month(Date), 1) Do while Month(CMDate) = Month(Date) Range("A1").Offset (i, 0) = CMDate i = i + 1 CMDate = CMDate + 1 Loop End Sub

Yukarıdaki kod, çalışma sayfasının ilk sütununa (A1'den başlayarak) tüm tarihleri ​​girecektir. Döngüler, 'CMDate' değişkeninin Ay değeri mevcut ayınkiyle eşleşene kadar devam eder.

Çıkış Yap Bildirimi

Döngüden çıkmak için Exit Do deyimini kullanabilirsiniz. Kod 'Exit Do' satırını çalıştırır çalıştırmaz Do while döngüsünden çıkar ve kontrolü döngüden hemen sonraki satıra geçirir.

Örneğin, yalnızca ilk 10 tarihi girmek istiyorsanız, ilk 10 tarih girilir girilmez döngüden çıkabilirsiniz.

Aşağıdaki kod bunu yapacak:

Sub EnterCurrentMonthDates() Dim CMDate As Date Dim i As Integer i = 0 CMDate = DateSerial(Year(Date), Month(Date), 1) Do while Month(CMDate) = Month(Date) Range("A1").Offset (i, 0) = CMDate i = i + 1 Eğer i >= 10 ise Exit Do CMDate = CMDate + 1 Loop End Sub

Yukarıdaki kodda, i değerinin 10'dan büyük olup olmadığını kontrol etmek için IF ifadesi kullanılır. 'i' değeri 10 olur olmaz Exit Do deyimi yürütülür ve döngü sona erer.

Döngüye Kadar Yap

'Yapılana Kadar' döngüleri, 'Do While' döngülerine çok benzer.

'Do While'da, döngü verilen koşul karşılanana kadar çalışır, 'Yapılana Kadar'da, belirtilen koşul karşılanana kadar döngü yapar.

Do Before Loop'ta iki tür sözdizimi vardır.

[Koşula kadar] [Yürütülecek kod bloğu] Döngü yapın

ve

[Yürütülecek kod bloğu] Döngü yapın [Koşula kadar]

Bu ikisi arasındaki fark, ilkinde, herhangi bir kod bloğu yürütülmeden önce ilk olarak Bitiş koşulunun kontrol edilmesi ve ikinci durumda, önce kod bloğunun çalıştırılması ve ardından Bitiş koşulunun kontrol edilmesidir.

Bu, Bitiş koşulunun her iki durumda da TRUE olması durumunda, kodun ikinci durumda en az bir kez çalışacağı anlamına gelir (kod bir kez yürütüldükten sonra 'Until' koşulu kontrol edildiğinden).

Şimdi VBA'da Do Kadar döngülerini kullanmanın bazı örneklerini görelim.

Not: Bitene Kadar Yap için tüm örnekler Do While ile aynıdır. Bunlar, Do Kadar Döngüsünün nasıl çalıştığını göstermek için değiştirildi.

Örnek 1 - VBA kullanarak İlk 10 Pozitif Tam Sayıyı Ekleme

İlk on pozitif tamsayıyı VBA'daki Do Kadar Döngüsünü kullanarak eklemek istediğinizi varsayalım.

Bunu yapmak için, bir sonraki sayı 10'dan küçük veya ona eşit olana kadar döngüyü çalıştırmanız gerekir. Sayı 1o'dan büyük olduğu anda döngünüz durur.

İşte bu döngüyü çalıştıracak ve sonucu bir mesaj kutusunda gösterecek olan VBA kodu.

Sub AddFirst10PositiveIntegers() Dim i As Integer i = 1 Do Kadar i > 10 Sonuç = Sonuç + i i = i + 1 Döngü MsgBox Sonuç End Sub

Yukarıdaki döngü, 'i' değeri 11 olana kadar çalışmaya devam eder. 11 olur olmaz döngü biter ('Until' koşulu True olduğunda).

Örnek 2 - Mevcut Ay İçin Tarih Girin

Mevcut ayın tüm tarihlerini bir çalışma sayfası sütununa girmek istediğinizi varsayalım.

Bunu, aşağıdaki Do Kadar Döngü kodunu kullanarak yapabilirsiniz:

Sub EnterCurrentMonthDates() Dim CMDate As Date Dim i As Integer i = 0 CMDate = DateSerial(Year(Date), Month(Date), 1) Do Ay(CMDate) Month(Date) Range("A1").Offset( i, 0) = CMDate i = i + 1 CMDate = CMDate + 1 Loop End Sub

Yukarıdaki kod, çalışma sayfasının ilk sütununa (A1'den başlayarak) tüm tarihleri ​​girecektir. Döngü, CMDate değişkeninin Ayı geçerli ayınkine eşit olmayana kadar devam eder.

Çıkış Yap Bildirimi

Döngüden çıkmak için 'Exit Do' ifadesini kullanabilirsiniz.

Kod, ‘Exit Do’ satırını yürütür çalıştırmaz, Do Kadar döngüsünden çıkar ve kontrolü döngüden hemen sonraki satıra geçirir.

Örneğin, yalnızca ilk 10 tarihi girmek istiyorsanız, ilk 10 tarih girilir girilmez döngüden çıkabilirsiniz.

Aşağıdaki kod bunu yapacak:

Sub EnterCurrentMonthDates() Dim CMDate As Date Dim i As Integer i = 0 CMDate = DateSerial(Year(Date), Month(Date), 1) Do Ay(CMDate) Month(Date) Range("A1").Offset( i, 0) = CMDate i = i + 1 Eğer i >= 10 ise Exit Do CMDate = CMDate + 1 Loop End Sub

Yukarıdaki kodda, 'i' değeri 10 olur olmaz Exit Do deyimi yürütülür ve döngü sona erer.

Her biri için

VBA'da, 'Her Biri İçin' döngüsünü kullanarak bir dizi koleksiyon arasında dolaşabilirsiniz.

Excel VBA'daki bazı koleksiyon örnekleri:

  • Tüm açık Çalışma Kitaplarının bir koleksiyonu.
  • Bir çalışma kitabındaki tüm çalışma sayfalarının bir koleksiyonu.
  • Bir dizi seçili hücredeki tüm hücrelerin bir koleksiyonu.
  • Çalışma kitabındaki tüm çizelgelerin veya şekillerin bir koleksiyonu.

'Her Biri İçin' döngüsünü kullanarak, bir koleksiyondaki nesnelerin her birini inceleyebilir ve üzerinde bazı eylemler gerçekleştirebilirsiniz.

Örneğin, bir çalışma kitabındaki tüm çalışma sayfalarını inceleyebilir ve bunları koruyabilir veya seçimdeki tüm hücreleri gözden geçirip biçimlendirmeyi değiştirebilirsiniz.

'Her Biri İçin' döngüsüyle ("Her Bir Sonraki İçin" döngüsü olarak da anılır), bir koleksiyonda kaç tane nesne olduğunu bilmenize gerek yoktur.

'Her Biri İçin' döngüsü otomatik olarak her nesneden geçer ve belirtilen eylemi gerçekleştirir. Örneğin, bir çalışma kitabındaki tüm çalışma sayfalarını korumak istiyorsanız, 3 çalışma sayfalı veya 30 çalışma sayfalı bir çalışma kitabınız olsa da kod aynı olacaktır.

İşte Excel VBA'daki Her Bir Sonraki döngü için sözdizimi.

Koleksiyondaki her öğe için [Yürütülecek Kod Bloğu] Sonraki [eleman]

Şimdi Excel'de Her Döngü İçin'i kullanmanın birkaç örneğini görelim.

Örnek 1 - Bir Çalışma Kitabındaki Tüm Çalışma Sayfalarını İnceleyin (ve Koruyun)

Tüm çalışma sayfalarını korumak istediğiniz bir çalışma kitabınız olduğunu varsayalım.

Aşağıda Her Bir Sonraki döngü için bunu kolayca yapabilirsiniz:

Sub ProtectSheets() Dim ws ActiveWorkbook.Worksheets'teki Her ws için Çalışma Sayfası Olarak ws ws.Protect Next ws End Sub

Yukarıdaki kodda 'ws' değişkenini Worksheet nesnesi olarak tanımladık. Bu, VBA'ya 'ws'nin kodda bir çalışma sayfası nesnesi olarak yorumlanması gerektiğini söyler.

Şimdi, aktif çalışma kitabındaki (ActiveWorkbook.Worksheets tarafından verilen) tüm çalışma sayfalarının koleksiyonundaki her bir 'ws' (bir çalışma sayfası nesnesidir) üzerinden geçmek için 'Her Biri İçin' ifadesini kullanıyoruz.

Bir çalışma kitabındaki tüm çalışma sayfalarını korumaya çalıştığımız diğer döngülerden farklı olarak, burada çalışma kitabında kaç tane çalışma sayfası olduğu konusunda endişelenmemize gerek olmadığını unutmayın.

Döngüyü çalıştırmak için bunları saymamıza gerek yok. For Her döngü, tüm nesnelerin tek tek analiz edilmesini sağlar.

Örnek 2 - Tüm Açık Çalışma Kitaplarını gözden geçirin (ve Tümünü Kaydet)

Aynı anda birden fazla çalışma kitabıyla çalışıyorsanız, tüm bu çalışma kitaplarını bir kerede kaydedebilmek kullanışlı olabilir.

VBA kodunun altında bunu bizim için yapabilir:

Sub SaveAllWorkbooks() Dim wb Çalışma Kitaplarındaki Her wb için wb.Save Next wb End Sub

Bu kodda, çalışma kitabını belirli bir konuma kaydetmenizi isteyen bir istem almadığınızı unutmayın (ilk kez kaydediyorsanız).

Varsayılan klasöre kaydeder (benim durumumda 'Belgeler' klasörüydü). Bu kod, bu dosyalar zaten kaydedilmişse ve siz değişiklik yapıyorsanız ve tüm çalışma kitaplarını hızlı bir şekilde kaydetmek istiyorsanız en iyi sonucu verir.

Örnek 3 - Bir Seçimdeki Tüm Hücreleri İnceleyin (Negatif değerleri vurgulayın)

'Her Biri İçin' döngüsünü kullanarak, belirli bir aralıktaki veya seçilen aralıktaki tüm hücreler arasında dolaşabilirsiniz.

Bu, her bir hücreyi analiz etmek ve ona dayalı bir eylem gerçekleştirmek istediğinizde yardımcı olabilir.

Örneğin, seçimdeki tüm hücrelerden geçecek ve negatif değere sahip hücrelerin hücre rengini kırmızıya çevirecek kod aşağıdadır.

Sub HighlightNegativeCells() Dim Cll As Range, Seçimdeki Her Cll İçin Cll.Value < 0 ise Cll.Interior.Color = vbRed End If Next Cll End Sub

(Cll'yi Hücre için kısa bir değişken adı olarak kullandığımı unutmayın. Değişken adları olarak Sayfalar veya Aralık gibi nesne adlarını kullanmamanız önerilir)

Yukarıdaki kodda, For Every-Next döngüsü, seçimdeki hücrelerin koleksiyonundan geçer. EĞER ifadesi, hücre değerinin negatif olup olmadığını belirlemek için kullanılır. Bu durumda hücreye kırmızı bir iç renk verilir, yoksa bir sonraki hücreye geçer.

Seçiminiz yoksa ve bunun yerine VBA'nın belirli bir hücreden başlayarak bir sütundaki tüm doldurulmuş hücreleri seçmesini istiyorsanız (tıpkı tüm doldurulmuş hücreleri seçmek için Control + Shift + Aşağı ok tuşlarını kullandığımız gibi), şunları yapabilirsiniz: aşağıdaki kodu kullanın:

Sub HighlightNegativeCells() Dim Cll As Range Dim Rng As Range Set Rng = Range("A1", Range("A1").End(xlDown)) Rng'deki Her Cll İçin Cll.Value < 0 ise Cll.Interior.Color = vbRed End If Next Cll End Sub

Yukarıdaki örnekte, kaç tane dolu hücre olduğu önemli değildir. A1 hücresinden başlayacak ve sütundaki tüm bitişik doldurulmuş hücreleri analiz edecektir.

Ayrıca A1 hücresini seçmeniz gerekmez. Herhangi bir uzaktaki hücreyi seçebilirsiniz ve kod çalıştığında, yine de A sütunundaki (A1'den başlayarak) tüm hücreleri dikkate alacak ve negatif hücreleri renklendirecektir.

'Çıkış İçin' Açıklaması

Döngüden çıkmak için For Her-Sonraki döngüsündeki 'Çıkış For' ifadesini kullanabilirsiniz. Bu genellikle belirli bir koşulun karşılanması durumunda yapılır.

Örneğin Örnek 3'te bir hücre kümesinden geçerken negatif değer olup olmadığını kontrol etmek daha verimli olabilir. Negatif değer olmaması durumunda, basitçe döngüden çıkabilir ve VBA işlem süresinden biraz tasarruf edebiliriz.

Bunu yapacak VBA kodu aşağıdadır:

Sub HighlightNegativeCells() Dim Cll As Range Her Cll İçin Seçimde WorksheetFunction.Min(Selection) >= 0 ise Cll.Value < 0 ise Cll.Interior.Color = vbRed End If Sonraki Cll End Sub

VBA Kodunu Nereye Koymalı

Excel çalışma kitabınızda VBA kodunun nereye gittiğini merak mı ediyorsunuz?

Excel'in VBA düzenleyicisi adı verilen bir VBA arka ucu vardır. VB Editor modülü kod penceresine kodu kopyalayıp yapıştırmanız gerekir.

İşte bunu yapmak için adımlar:

  1. Geliştirici sekmesine gidin.
  2. Visual Basic seçeneğine tıklayın. Bu, arka uçta VB düzenleyicisini açacaktır.
  3. VB Düzenleyicisi'ndeki Proje Gezgini bölmesinde, kodu eklemek istediğiniz çalışma kitabı için herhangi bir nesneye sağ tıklayın. Proje Gezgini'ni görmüyorsanız, Görünüm sekmesine gidin ve Proje Gezgini'ne tıklayın.
  4. Ekle'ye gidin ve Modül'e tıklayın. Bu, çalışma kitabınız için bir modül nesnesi ekleyecektir.
  5. Modül penceresindeki kodu kopyalayıp yapıştırın.
wave wave wave wave wave