Vba for loop (للتالي، لكل منهما)
النقاط الرئيسية
- حلقات VBA For هي أنواع حلقات ثابتة.
- ليس من الممكن استخدام إحدى هذه الحلقات عند تسجيل ماكرو .
للحلقة القادمة
VBA FOR NEXT عبارة عن حلقة ثابتة تستخدم عدادًا لتنفيذ التكرارات. بعبارات بسيطة، تحتاج إلى تحديد عدد المرات التي تريد تشغيل الحلقة فيها، وبمجرد وصولها إلى هذا العدد من الحلقات، ستتوقف تلقائيًا. هذا هو السبب في أنها حلقة ثابتة والأكثر شعبية بين مطوري VBA.
بناء الجملة
فيما يلي بناء جملة حلقة VBA For Next:
For counter = Start To End [Step stepsize] [statements] Next [counter]
- العداد : هو متغير يقوم بتخزين عدد التكرارات وتزيد قيمته مع كل تكرار. على سبيل المثال، إذا كانت الحلقة في التكرار الخامس، ستكون قيمة العداد خمسة، وبمجرد تنفيذ الحلقة لتعليمة التكرار الخامس، تتغير قيمة العداد إلى ستة.
- البداية : هو متغير رقمي يقوم بتخزين قيمة البداية للعداد.
- End : هو متغير رقمي يقوم بتخزين القيمة النهائية للعداد.
- حجم الخطوة : يحدد هذا المتغير الزيادة أو النقصان الكبير في قيمة العداد. بشكل افتراضي، يكون حجم الخطوة واحدًا، ولكن يمكنك أيضًا استخدام أي قيمة موجبة أو سالبة.
- البيان : هذه مجموعة من التعليمات البرمجية التي تريد تشغيلها في كل تكرار للحلقة التالية.
- التالي : هذه هي العبارة النهائية لتكرار الحلقة وتستخدم قيمة العداد لإخبار VBA بتكرار الحلقة وبمجرد وصول العداد إلى القيمة النهائية، فإنه ينهي الحلقة.
مثال لفهم الحلقة القادمة
لفهم كيفية استخدامه للحلقة التالية، دعونا نكتب رمزًا بسيطًا لإضافة الأرقام التسلسلية في عمود.
اسمحوا لي أن أوضح المزيد: نحتاج إلى كتابة رمز يمكنه الانتقال من الخلية المحددة إلى الخلايا العشر التالية واحدة تلو الأخرى وإضافة أرقام تسلسلية فقط في اللقطة أدناه.
لاستخدام For Next Loop، يمكنك اتباع الخطوات التالية:
- أولاً، عليك الإعلان عن متغير يمكنك استخدامه لتخزين قيمة العداد.
- بعد ذلك، نحتاج إلى تعيين قيمة العداد للمتغير.
- الآن حان وقت كتابة التعليمات البرمجية للحلقة، لذلك في السطر الأول تحتاج إلى استخدام متغير العداد وتعيين قيم البداية والنهاية. هنا في هذا الكود لديك المتغير “i” كقيمة النهاية.
- ومن هناك، تحتاج إلى كتابة رمز يمكنه إضافة الأرقام التسلسلية إلى الخلية النشطة ثم الانتقال إلى الخلية التالية. مع زيادة قيمة العداد مع كل تكرار، يمكنك استخدامه لإدخال الرقم التسلسلي في الخلية النشطة وبعد ذلك يمكنك استخدام Shift لنقل التحديد إلى الخلية التالية لأسفل.
- في النهاية، استخدم الكلمة الأساسية التالية ومتغير العداد لإكمال رمز الحلقة.
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
يمكنك أن ترى في اللقطة أدناه، عندما أقوم بتشغيل هذا الرمز، فإنه يبدأ من الخلية المحددة عن طريق إدخال رقم تسلسلي ثم ينتقل إلى الخلية التالية في كل تكرار.
كما تعلم فإن 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 الانتقال إلى الكائن التالي في المجموعة.
مثال لفهم حلقة For Each Next
لفهم حلقة For Each Next، دعنا نكتب تعليمات برمجية لإخفاء جميع الأوراق بخلاف ورقة العمل النشطة. سيقوم هذا الكود بالتحقق من اسم كل ورقة عمل ومطابقتها لاسم ورقة العمل النشطة وإخفائها في حالة عدم التطابق.
لاستخدام حلقة For Each Next، يمكنك اتباع الخطوات التالية:
- أولاً، عليك الإعلان عن متغير لاستخدامه كورقة عمل.
- بعد ذلك، استخدم الكلمة الأساسية “For Each”، ثم المتغير “mySheet” للورقة، واستخدم “ActiveWorkbook.Worksheets” لمجموعة أوراق عمل المصنف النشط.
- بعد ذلك، تحتاج إلى استخدام عبارة VBA IF لاختبار ما إذا كان اسم الورقة الموجودة حاليًا في تكرار الحلقة هذا لا يساوي ورقة العمل النشطة، وإذا كان هذا الشرط صحيحًا، قم بإخفاء الورقة الموجودة الآن في الحلقة تكرار.
- في النهاية، لديك الكلمة الأساسية NEXT والمتغير “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
عند تشغيل هذا الكود ، فإنه يمر عبر كل ورقة عمل في المصنف النشط ويطابق اسمها مع ورقة العمل النشطة، وإذا كان اسم ورقة العمل لا يتطابق مع اسم ورقة العمل النشطة، فإنه يفعل ذلك. قناع.
بهذه الطريقة سيتم إخفاء كافة أوراق العمل.
الدروس ذات الصلة
- حلقات VBA (المبتدئ إلى المتقدم)
- VBA حدد الحالة
- Excel VBA Do while Loop و (Do Loop while) – دليل
- قم بالمراجعة عبر كافة الأوراق باستخدام VBA في Excel
- قم بالتكرار فوق نطاق باستخدام VBA (الأعمدة والصف والمستخدم)
- إعلان GoTo VBA