حلقات التكرار في الإكسل بلغة VBA

 الدرس الخامس حلقات التكرار في لغة VBA 


هناك حالات تحتاج فيه إلى تنفيذ كتلة من التعليمات البرمجية عدة مرات. بشكل عام ، يتم تنفيذ البيانات في تسلسل محدد مسبقًا.

توفر لغات البرمجة هياكل تحكم متنوعة تسمح بمسارات تنفيذ أكثر تعقيدًا.

تسمح لك حلقه for  بتنفيذ جملة أو مجموعة من العبارات عدة مرات. 


على سبيل المثال: ضع في اعتبارك مجموعة بيانات وتريد تمييز جميع الخلايا في صفوف زوجية. يمكنك استخدام حلقات VBA لتصفح النطاق وتحليل رقم صف كل خلية. إذا تحولت إلى اللون المتساوي ، فأنت تعطي لونًا لها. وإلا فإنك تتركها كما هي.


- يوفر VBA أنواعًا مختلفة من الحلقات للتعامل مع متطلبات التكرار. فيما يلي مقدمة مختصرة لكل حلقة ، مثل: 


- حلقة For : تنفذ سلسلة من العبارات عدة مرات حول الحلقه نفسها 


- حلقه For loop يستخدم متغيرًا تمر به الدورة عبر سلسلة من القيم ضمن نطاق محدد. ثم يتم تنفيذ الكود داخل الحلقة لكل قيمة في VBA.


- حلقة Do while : يتم تنفيذها طالما أن الشرط صحيح أو يجب تكرار الحلقة فقط عندما يكون الموقف خطأ.


4. حلقه Do Until loop : سيتم تنفيذها طالما أن الشرط خطأ أو يجب تكرار الحلقة فقط عندما يكون الموقف صحيحًا. 

حلقة التكرار for في الإكسل بلغة VBA

حلقة 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 في الإكسل بلغة 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 في الإكسل بلغة 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




تعليقات