Az önce öğrendiklerimizi uygulamak için, o anda aktif olan hücreden başlayarak 10x10 dama tahtasını (kırmızı ve siyah) boyamak için bir makro oluşturma sürecini izleyeceğiz.
Almak istediğimiz döngünün çıktısına bakalım:
Daha sonra alıştırmanın ilk adımı boş bir prosedür oluşturmak olacaktır:
Sub loops_exercise() Const NB_CELLS As Integer = 10 'Boyamak istediğimiz hücre sayısı '... End Sub
A sütununu karartmak için bir FOR döngüsü ekleyerek başlayalım (NB_CELLS sabiti 10'dur).
Aşağıdaki sonucu almalıyız:
Kodlara bir göz atalım:
Sub loops_exercise() Const NB_CELLS As Integer = 10 'Boyamak istediğimiz hücre sayısı For r = 1 To NB_CELLS 'r => satır numarası Cells(r, 1).Interior.Color = RGB(0, 0, 0) 'Siyah Next End Sub
Bir sonraki adım, IF komutunu kullanarak (satır numarasının çift veya tek olmasına bağlı olarak) sonraki her hücreyi kırmızıya boyar. Görmek daha düşük:
Bu alt görevi çözmenin kodu aşağıdaki gibidir:
Sub loops_exercise() Const NB_CELLS As Integer = 10 'Boyamak istediğimiz hücre sayısı For r = 1 To NB_CELLS 'r => satır numarası If r Mod 2 = 0 Then 'Mod => bölme işleminden kalandır Cells(r, 1).Interior.Color = RGB(200, 0, 0) 'Kırmızı Else Cells(r, 1).Interior.Color = RGB(0, 0, 0) 'Siyah End If Next End Sub
IF r Mod 2 = 0 koşulu şu anlama gelir: eğer r'nin 2'ye bölünmesinden kalan 0 ise...
Yalnızca çift olan satır numarası 2'ye bölündüğünde 0 kalanını alır:
Daha önce 10 sütun boyunca yazdığımız döngüyü çalıştıracak başka bir döngü nasıl yapılır? Görmek daha düşük:
Bu alt görevi çözmenin kodu aşağıdaki gibidir:
Sub loops_exercise() Const NB_CELLS As Integer = 10 '10x10 hücreli dama tahtası For r = 1 To NB_CELLS 'r => Satır numarası For c = 1 To NB_CELLS 'c => Sütun numarası If r Mod 2 = 0 Then Cells(r, c).Interior.Color = RGB(200, 0, 0) 'Kırmızı Else Cells(r, c).Interior.Color = RGB(0, 0, 0) 'Siyah End If Next Next End Sub
Şimdi ikinci döngü birinciye eklenir.
Aşağıdaki sonuca ulaşmak için...
Yer değiştirmek:
If r Mod 2 = 0 Then
Açık:
If (r + c) Mod 2 = 0 Then
Geriye kalan tek şey, kodu, seçilen hücreden (A1'den değil) başlayarak dama tahtası oluşturulacak şekilde değiştirmek. Aşağıya bakınız:
Bunun için aşağıdaki kodu yazacağız:
Sub loops_exercise() Const NB_CELLS As Integer = 10 '10x10 hücreli dama tahtası Dim offset_row As Integer, offset_col As Integer '=> 2 değişken ekle 'İlk hücreden başlayan uzaklık (satırlar) = mevcut aktif hücrenin satır numarası - 1 offset_row = ActiveCell.Row - 1 'İlk hücreden başlayan uzaklık (sütunlar) = mevcut aktif hücrenin sütun numarası - 1 offset_col = ActiveCell.Column - 1 For r = 1 To NB_CELLS 'Satır numarası For c = 1 To NB_CELLS 'Sütun numarası If (r + c) Mod 2 = 0 Then 'Hücre(satır numarası + ek satır uzaklığı, sütun numarası + 'sütunların ilave yer değiştirmesi) Cells(r + offset_row, c + offset_col).Interior.Color = RGB(200, 0, 0) 'Kırmızı Else Cells(r + offset_row, c + offset_col).Interior.Color = RGB(0, 0, 0) 'Siyah End If Next Next End Sub