Vba for loop (للتالي، لكل منهما)

النقاط الرئيسية

للحلقة القادمة

VBA FOR NEXT عبارة عن حلقة ثابتة تستخدم عدادًا لتنفيذ التكرارات. بعبارات بسيطة، تحتاج إلى تحديد عدد المرات التي تريد تشغيل الحلقة فيها، وبمجرد وصولها إلى هذا العدد من الحلقات، ستتوقف تلقائيًا. هذا هو السبب في أنها حلقة ثابتة والأكثر شعبية بين مطوري VBA.

بناء الجملة

فيما يلي بناء جملة حلقة VBA For Next:

 For counter = Start To End [Step stepsize] [statements] Next [counter]
من أجل ضد البداية إلى النهاية
  1. العداد : هو متغير يقوم بتخزين عدد التكرارات وتزيد قيمته مع كل تكرار. على سبيل المثال، إذا كانت الحلقة في التكرار الخامس، ستكون قيمة العداد خمسة، وبمجرد تنفيذ الحلقة لتعليمة التكرار الخامس، تتغير قيمة العداد إلى ستة.
  2. البداية : هو متغير رقمي يقوم بتخزين قيمة البداية للعداد.
  3. End : هو متغير رقمي يقوم بتخزين القيمة النهائية للعداد.
  4. حجم الخطوة : يحدد هذا المتغير الزيادة أو النقصان الكبير في قيمة العداد. بشكل افتراضي، يكون حجم الخطوة واحدًا، ولكن يمكنك أيضًا استخدام أي قيمة موجبة أو سالبة.
  5. البيان : هذه مجموعة من التعليمات البرمجية التي تريد تشغيلها في كل تكرار للحلقة التالية.
  6. التالي : هذه هي العبارة النهائية لتكرار الحلقة وتستخدم قيمة العداد لإخبار VBA بتكرار الحلقة وبمجرد وصول العداد إلى القيمة النهائية، فإنه ينهي الحلقة.

مثال لفهم الحلقة القادمة

لفهم كيفية استخدامه للحلقة التالية، دعونا نكتب رمزًا بسيطًا لإضافة الأرقام التسلسلية في عمود.

مثال لفهم الحلقة التالية

لاستخدام For Next Loop، يمكنك اتباع الخطوات التالية:

  1. أولاً، عليك الإعلان عن متغير يمكنك استخدامه لتخزين قيمة العداد.
    declare-a-variable
  2. بعد ذلك، نحتاج إلى تعيين قيمة العداد للمتغير.
    assign-the-counter-value
  3. الآن حان وقت كتابة التعليمات البرمجية للحلقة، لذلك في السطر الأول تحتاج إلى استخدام متغير العداد وتعيين قيم البداية والنهاية. هنا في هذا الكود لديك المتغير “i” كقيمة النهاية.
    write-code-for-loop
  4. ومن هناك، تحتاج إلى كتابة رمز يمكنه إضافة الأرقام التسلسلية إلى الخلية النشطة ثم الانتقال إلى الخلية التالية. مع زيادة قيمة العداد مع كل تكرار، يمكنك استخدامه لإدخال الرقم التسلسلي في الخلية النشطة وبعد ذلك يمكنك استخدام Shift لنقل التحديد إلى الخلية التالية لأسفل.
    code-that-can-add-serial-number
  5. في النهاية، استخدم الكلمة الأساسية التالية ومتغير العداد لإكمال رمز الحلقة.
 Sub AddSerialNumbers() Dim i As Integer i = 10 For i = 1 To i ActiveCell.Value = i ActiveCell.Offset(1, 0).Activate Next i End Sub

يمكنك أن ترى في اللقطة أدناه، عندما أقوم بتشغيل هذا الرمز، فإنه يبدأ من الخلية المحددة عن طريق إدخال رقم تسلسلي ثم ينتقل إلى الخلية التالية في كل تكرار.

vba-for-next-loop-example-1

كما تعلم فإن For Next عبارة عن حلقة ثابتة وفي هذا الكود عندما تقوم بتعيين قيمة رقمية فإنه يخبر VBA بتشغيل الحلقة بهذا العدد من المرات.

ويمكنك رؤية اللقطة أدناه التي التقطتها في التكرار الثاني للحلقة حيث قيمة متغير العداد “i” هي اثنان.

تعيين قيمة عددية

النقطة التي أحاول توضيحها هي أن متغير العدد يغير قيمته في كل تكرار ويدخل تلك القيمة في الخلية النشطة، ثم يؤدي النقل إلى تنشيط الخلية التالية لأسفل والتي تكمل التكرار.

في النهاية، الكلمة الأساسية “التالي” هي VBA للعودة إلى السطر الأول من الحلقة وتكرارها. كما رأيت في بناء جملة For Next، يمكنك أيضًا استخدام قيمة خطوة في الحلقة لتشغيل العداد بناءً على ذلك.

لذا، إذا استخدمت اثنين كقيمة الخطوة، فسيبدو الرمز كما يلي.

 Sub AddSerialNumbers() Dim i As Integer i = 10 For i = 1 To i Step 2 ActiveCell.Value = i ActiveCell.Offset(1, 0).Activate Next i End Sub

وعندما تقوم بتشغيل هذا الكود، سيكون هناك في النشاط ما يشبه اللقطة أدناه.

عندما تقوم بتشغيل لقطة التعليمات البرمجية

عند استخدام قيمة خطوة (مثل الخطوة 2، التي استخدمتها في الكود أعلاه)، يتجاهل VBA كل تكرار ثانٍ في الحلقة، وكما ترون، لديك خمسة أرقام مع اختلاف واحد في كل رقم.

ملاحظة : في المثال أعلاه، استخدمت “i” كمتغير العداد، ولكن يمكنك أيضًا استخدام اسم مختلف حسب ما يناسبك.

لكل حلقة لاحقة

VBA FOR EACH NEXT عبارة عن حلقة ثابتة يمكنها التكرار عبر كافة الكائنات الموجودة في المجموعة. في For Each Next، لا تحتاج إلى تحديد عدد التكرارات. بدلاً من ذلك، يمكنك تحديد مجموعة من الكائنات، وسيكون قادرًا على التكرار خلال كل تلك الكائنات واحدًا تلو الآخر.

بناء الجملة

فيما يلي بناء جملة VBA لكل حلقة لاحقة:

 For Each Object In Collection [statements] Next [object]
بناء الجملة مقابل VBA لكل حلقة التالية
  1. الكائن : يمثل الكائن الوحيد في مجموعة الكائنات الذي تقوم بالتكرار خلاله. في كل تكرار، ينتقل من كائن إلى آخر.
  2. المجموعة : هذه مجموعة من الكائنات التي تريد تكرارها.
  3. البيان : سطر (أسطر) من التعليمات البرمجية التي تريد تشغيلها في كل حلقة عبر كافة الكائنات الموجودة في المجموعة.
  4. التالي : هذا هو البيان النهائي لتكرار الحلقة ويطلب من VBA الانتقال إلى الكائن التالي في المجموعة.

مثال لفهم حلقة For Each Next

لفهم حلقة For Each Next، دعنا نكتب تعليمات برمجية لإخفاء جميع الأوراق بخلاف ورقة العمل النشطة. سيقوم هذا الكود بالتحقق من اسم كل ورقة عمل ومطابقتها لاسم ورقة العمل النشطة وإخفائها في حالة عدم التطابق.

لاستخدام حلقة For Each Next، يمكنك اتباع الخطوات التالية:

  1. أولاً، عليك الإعلان عن متغير لاستخدامه كورقة عمل.
    code-to-hide-the-all-sheets
  2. بعد ذلك، استخدم الكلمة الأساسية “For Each”، ثم المتغير “mySheet” للورقة، واستخدم “ActiveWorkbook.Worksheets” لمجموعة أوراق عمل المصنف النشط.
    for-each-mysheet-active-workbook-worsheets
  3. بعد ذلك، تحتاج إلى استخدام عبارة VBA IF لاختبار ما إذا كان اسم الورقة الموجودة حاليًا في تكرار الحلقة هذا لا يساوي ورقة العمل النشطة، وإذا كان هذا الشرط صحيحًا، قم بإخفاء الورقة الموجودة الآن في الحلقة تكرار.
    vba-if-statement-to-test
  4. في النهاية، لديك الكلمة الأساسية NEXT والمتغير “mySheet” لإكمال رمز الحلقة.
    next-keyword-and-mysheet

الكود النهائي:

 Sub Hide_Other_Sheets() Dim mySheet As Worksheet For Each mySheet In ActiveWorkbook.Worksheets If mySheet.Name <> ActiveSheet.Name Then mySheet.Visible = False End If Next mySheet End Sub

بهذه الطريقة سيتم إخفاء كافة أوراق العمل.

اضف تعليق

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *