الدرس الخامس حلقات التكرار في لغة VBA
هناك حالات تحتاج فيه إلى تنفيذ كتلة من التعليمات البرمجية عدة مرات. بشكل عام ، يتم تنفيذ البيانات في تسلسل محدد مسبقًا.
توفر لغات البرمجة هياكل تحكم متنوعة تسمح بمسارات تنفيذ أكثر تعقيدًا.
تسمح لك حلقه for بتنفيذ جملة أو مجموعة من العبارات عدة مرات.
على سبيل المثال: ضع في اعتبارك مجموعة بيانات وتريد تمييز جميع الخلايا في صفوف زوجية. يمكنك استخدام حلقات VBA لتصفح النطاق وتحليل رقم صف كل خلية. إذا تحولت إلى اللون المتساوي ، فأنت تعطي لونًا لها. وإلا فإنك تتركها كما هي.
- يوفر VBA أنواعًا مختلفة من الحلقات للتعامل مع متطلبات التكرار. فيما يلي مقدمة مختصرة لكل حلقة ، مثل:
- حلقة For : تنفذ سلسلة من العبارات عدة مرات حول الحلقه نفسها
- حلقه For loop يستخدم متغيرًا تمر به الدورة عبر سلسلة من القيم ضمن نطاق محدد. ثم يتم تنفيذ الكود داخل الحلقة لكل قيمة في VBA.
- حلقة Do while : يتم تنفيذها طالما أن الشرط صحيح أو يجب تكرار الحلقة فقط عندما يكون الموقف خطأ.
4. حلقه Do Until loop : سيتم تنفيذها طالما أن الشرط خطأ أو يجب تكرار الحلقة فقط عندما يكون الموقف صحيحًا.
حلقة التكرار for في الإكسل بلغة VBA
* حلقة For هي بنية تحكم في التكرار تسمح للمطور بأن يكون منطقيًا يكتب حلقة تحتاج إلى تنفيذها عددًا محددًا من المرات.
- فيما يلي بعض خيارات التحكم في حلقة for كما هو موضح أدناه ، مثل:
أولا ، يتم تنفيذ حلقة for. يتيح لك هذا تهيئة أي متغيرات تحكم في الحلقة وزيادة متغير عداد الخطوة.
ثانيًا ، يتم تقييم شروط الحلقة. إذا كان صحيحًا ، فسيتم تنفيذ جسم الحلقة. وإذا كان خطأ ، فإن الجسد لا ينفذ. ينتقل تدفق عنصر التحكم إلى العبارة التالية بعد حلقة For.
ثم يتم تنفيذ جسم الحلقة for ، وينتقل تدفق التحكم إلى العبارة التالية. وهذه العبارة تسمح لك بتحديث أي متغيرات تحكم في الحلقة. يتم تحديثه بناءً على قيمة عداد الخطوة.
الآن ، تم إعادة تقييم الحالة. إذا كان هذا صحيحًا ، يتم تنفيذ الحلقة ، وتكرر العملية بأكملها نفسها. وإذا كان الشرط خاطئًا ، فسيتم إنهاء حلقة for.
مثال
Sub forNext () Dim i As Integer Dim iTotal As Integer iTotal = 0 For i = 1 to 10 iTotal = I + iTotal Next i MsgBox iTotal End Sub
شرح
طبعا مثال جدا سهل
عرفنا متغير i ثم جعلنا حلقه تبدا تكرر من رقم 1 الى رقم 10
حلقه التكرار For each في الإكسل بلغة VBA
تُعَد من أقوى تقنيّات الماكرو، وهذا النوع هو الأكثر شيوعًا من الحلقات، حيث تسمح لنا حلقة For Next Loop بالمرور عبر مجموعة من العناصر في إكسل وتكرار بعض العمليات عليها. وقد تتضمن مجموعات العناصر ما يلي:
➖ خلايا في نطاق.
➖ أوراق العمل في مصنف.
➖ المصنفات على الحاسوب.
➖ الجداول المحورية في ورقة العمل.
➖ الحقول المحورية في جدول محوري.
➖ الأشكال الموجودة في ورقة العمل، ➖وأي كائن آخر تتفاعل معه في إكسل.
تستخدم كل حلقة لتنفيذ عبارة أو مجموعة من العبارات لكل عنصر في المصفوفة.
تشبه حلقة " For each " حلقة " For ". يتم تنفيذ هذه الحلقة لكل عنصر في المصفوفة. لذلك ، لن يكون عداد الخطوات موجودًا في هذه الحلقة. يتم استخدامه بشكل شائع مع المصفوفات أو في سياق كائنات نظام الملفات للعمل بشكل متكرر.
مثال
لنفرض نريد ان نحمي جميع اوراق المصنف باستخدام حلقه For each يكون الكود كالتالي
Sub ProtectSheets() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets Ws.Protect Next ws End Sub
شرح مثال
عرفنا متغير ws ثم وضعنا شرط For each حمايه جميع اوراق المصنف Worksheets
مثال اخر طباعه ثلاثه الوان
Private Sub Constant_demo_Click() colors = Array("Pink", "orange", "Red") Dim colornames As Variant For Each Item In colors colornames = colornames & Item & Chr(10) Next MsgBox colornames End Sub
حلقه التكرار Do while في الإكسل بلغة VBA
يتم استخدام Do while عندما نريد تكرار مجموعة من العبارات طالما أن الشرط صحيح ويتوقف عندما يتحول الشرط إلى خطأ.
يمكن التحقق من الحالة إما في بداية الحلقة أو في نهايتها.
إذا تم التحقق من الشرط في بداية التكرار التكراري ، فلن يتم تنفيذ كتلة الكود. إذا لم يتم استيفاء الشرط في البداية ولم يتم تشغيل الحلقة ولو مرة واحدة بينما إذا تم التحقق من الشرط في النهاية ، يتم تشغيل الحلقة مرة واحدة على الأقل.
مثال
Sub doWhile() Dim i As Integer Dim iTotal As Integer i = 10 iTotal = 0 Do While i > 10 iTotal = i + iTotal i = i - 1 Loop MsgBox iTotal End Sub
مثال اخر
Private Sub Constant_demo_Click() Do While i < 5 i = i + 1 msgbox "The value of i is : " & i Loop End Sub
مخرجات الكود
The value of i is : 1
The value of i is : 2
The value of i is : 3
The value of i is : 4
The value of i is : 5
حلقه التكرار Do until في الإكسل بلغة VBA
يتم استخدام Do until عندما نريد تكرار كتلة من التعليمات البرمجية أو مجموعة من العبارات إلى أجل غير مسمى حتى يصبح الشرط صحيحًا. يمكن التحقق من الحالة إما في بداية الحلقة أو في نهايتها.
إذا تم التحقق من الشرط في بداية الحلقة ، فلن يتم تنفيذ كتلة الكود إذا تم استيفاء الشرط نفسه في البداية (ولم يتم تشغيل الحلقة ولو مرة واحدة).
وإذا تم التحقق من الشرط في النهاية ، فسيتم تشغيل الحلقة مرة واحدة على الأقل.
مثال تنفيذ شروط في بدايه الحلقه
Private Sub Constant_demo_Click() i = 5 Do Until i > 10 i = i + 1 MsgBox ("The value of i is : " & i) Loop End Sub
مخرجات الكود
The value of i is: 6
The value of i is: 7
The value of i is: 8
The value of i is: 9
The value of i is: 10
The value of i is: 11
مثال اخر تنفيذ شروط في نهايه الحلقه
Sub exitDo1() Dim i As Integer Dim iTotal As Integer iTotal = 0 Do While i < 10 iTotal = i + iTotal i = i + 1 If i = ActiveSheet.Range("A1") Then Exit Do End If Loop MsgBox iTotal End Sub
مخرجات كود 45
مثال اخر الخروج من الحلقه
Private Sub Constan_demo_Click() i = 5 Do i = i + 1 MsgBox "the value of i is: " & i Loop Until i < 10 End Sub
مخرجات كود The value of i is :6