لممارسة ما تعلمناه للتو ، سنتابع عملية إنشاء ماكرو لرسم لوحة تحقق 10x10 (باللونين الأحمر والأسود) بدءًا من الخلية النشطة حاليًا.
لنلقِ نظرة على ناتج الحلقة التي نريد الحصول عليها:
 
بعد ذلك ، ستكون الخطوة الأولى من التمرين هي إنشاء إجراء فارغ:
Sub loops_exercise()
    Const NB_CELLS As Integer = 10 'عدد الخلايا التي نريد رسمها
    '...
   
End Sub
لنبدأ بإضافة حلقة FOR إلى العمود الأسود A (ثابت NB_CELLS هو 10).
يجب أن نحصل على النتيجة التالية:
 
دعنا نلقي نظرة على الكود:
Sub loops_exercise()
    Const NB_CELLS As Integer = 10 'عدد الخلايا التي نريد رسمها
    For r = 1 To NB_CELLS 'r => رقم الصف
   
        Cells(r, 1).Interior.Color = RGB(0, 0, 0) 'أسود
    Next
   
End Sub
تقوم الخطوة التالية بتلوين كل خلية لاحقة باللون الأحمر ، باستخدام تعليمة IF (بناءً على ما إذا كان رقم الصف زوجيًا أم فرديًا). يرى أدنى:
 
رمز حل هذه المهمة الفرعية هو كما يلي:
Sub loops_exercise()
    Const NB_CELLS As Integer = 10 'عدد الخلايا التي نريد رسمها
    For r = 1 To NB_CELLS 'r => رقم الصف
   
       If r Mod 2 = 0 Then 'Mod => هو الباقي من القسمة
           Cells(r, 1).Interior.Color = RGB(200, 0, 0) 'أحمر
       Else
           Cells(r, 1).Interior.Color = RGB(0, 0, 0) 'أسود
       End If
    Next
   
End Sub
الشرط IF r Mod 2 = 0 يعني: إذا كان باقي قسمة r على 2 هو 0 ...
فقط رقم الصف الذي يحتوي على باقي 0 عند قسمة 2:
كيف نصنع حلقة أخرى من شأنها أن تنفذ الحلقة التي كتبناها بالفعل لـ 10 أعمدة. يرى أدنى:
 
رمز حل هذه المهمة الفرعية هو كما يلي:
Sub loops_exercise()
    Const NB_CELLS As Integer = 10 '10x10 رقعة شطرنج مع خلايا
    For r = 1 To NB_CELLS 'r => رقم الصف
   
        For c = 1 To NB_CELLS 'ج => رقم العمود
       
           If r Mod 2 = 0 Then
               Cells(r, c).Interior.Color = RGB(200, 0, 0) 'أحمر
           Else
               Cells(r, c).Interior.Color = RGB(0, 0, 0) 'أسود
           End If
           
        Next
    Next
   
End Sub
الآن يتم إدخال الدورة الثانية في الأولى.
لتحقيق النتيجة التالية ...
 
يستبدل:
If r Mod 2 = 0 Then
على:
If (r + c) Mod 2 = 0 Then
كل ما تبقى القيام به هو تغيير الكود بحيث يتم إنشاء رقعة الداما بدءًا من الخلية المحددة (وليس A1). انظر أدناه:
 
لهذا سنكتب الكود التالي:
Sub loops_exercise()
   Const NB_CELLS As Integer = 10 '10x10 رقعة شطرنج مع خلايا
   Dim offset_row As Integer, offset_col As Integer '=> أضف متغيرين
   
   'الإزاحة (الصفوف) التي تبدأ من الخلية الأولى = رقم الصف للخلية النشطة الحالية - 1
   offset_row = ActiveCell.Row - 1
   'الإزاحة (الأعمدة) تبدأ من الخلية الأولى = رقم عمود الخلية النشطة الحالية - 1
   offset_col = ActiveCell.Column - 1
   
   For r = 1 To NB_CELLS 'رقم السطر
   
        For c = 1 To NB_CELLS 'رقم العمود
       
            If (r + c) Mod 2 = 0 Then
            'الخلية (رقم الصف + إزاحة الصف الإضافية ، رقم العمود +
            'إزاحة إضافية من مكبرات الصوت)
                Cells(r + offset_row, c + offset_col).Interior.Color = RGB(200, 0, 0) 'أحمر
            Else
                Cells(r + offset_row, c + offset_col).Interior.Color = RGB(0, 0, 0) 'أسود
            End If
           
        Next
   Next
   
End Sub