كيفية استخدام الحلقات التكرارية في VBA
في هذه التدوينة من سلسلة أساسيات VBA سنتعلم كيفية استخدام الحلقات التكرارية في VBA التي بطبيعة الحال تتيح لنا تكرار التعليمات
عدة مرات حتى لا تضطر إلى كتابة وحدات ماكرو لا نهاية لها وتوفر لنا الكثير من
الوقت.
يقوم الكود التالي بترقيم الخلايا في العمود من A الصف 1 إلى 12:
Sub exemple() Cells(1, 1) = 1 Cells(2, 1) = 2 Cells(3, 1) = 3 Cells(4, 1) = 4 Cells(5, 1) = 5 Cells(6, 1) = 6 Cells(7, 1) = 7 Cells(8, 1) = 8 Cells(9, 1) = 9 Cells(10, 1) = 10 Cells(11, 1) = 11 Cells(12, 1) = 12 End Sub
هذا الكود دائما يتكرر ...
على سبيل المثال لنقول انه يجب عليك ترقيم آلاف من السطور ... ذ
لذلك ربما سنعرف قيمة إنشاء الحلقات.
ها هي الحلقة Do :
Sub exemple() Do While [CONDITION] 'Instructions Loop End Sub
طالما أن الشرط صحيح ، يتم تنفيذ التعليمات في حلقة
هنا هو تكرار الماكرو أعلاه مع
الحلقة Do :
Sub exemple() Dim numero As Integer numero = 1 'Numéro de départ Do While numero <= 12 'Tant que la variable numero est <= 12, la boucle est répétée Cells(numero, 1) = numero 'Numérotation numero = numero + 1 'Le numéro est augmenté de 1 à chaque boucle Loop End Sub
بهذه الحلقة ، إذا أردنا ترقيم 500
سطر ، فسنحتاج فقط إلى استبدال 12 بـ 500 ...
DO LOOP
في المثال السابق ، كان بإمكاننا ان نرى الحلقة Do بالشكل التالي:
Sub exemple() Do While [CONDITION] 'Instructions Loop End Sub
مع Do، يمكن أيضًا وضع الشرط في
نهاية الحلقة ، مما يعني أنه سيتم تنفيذ التعليمات على أي حال مرة واحدة على الأقل:
Sub exemple() Do 'Instructions Loop While [CONDITION] End Sub
بدلاً من تكرار الحلقة عندما يكون
الشرط صحيحًا ، من الممكن الخروج من الحلقة عندما يكون الشرط صحيحًا عن طريق استبدال While بواسطةUntil :
Sub exemple() Do Until [CONDITION] 'Instructions Loop End Sub
FOR NEXT
Sub exemple() Dim i As Integer For i = 1 To 5 'Instructions Next End Sub
الحلقة For تتكرر هنا 5 مرات.
في كل مرة تتكرر الحلقة ، المتغير i يتزايد تلقائيًا بمقدار 1:
Sub exemple() Dim i As Integer For i = 1 To 5 MsgBox i 'Renvoie les valeurs : 1 / 2 / 3 / 4 / 5 Next End Sub
إذا لزم الأمر ، يمكنك تغيير
الزيادة افتراضيًا إلى 1 للحلقة عن طريق الإضافة Step :
Sub exemple() Dim i As Integer For i = 10 To 0 Step -2 MsgBox i 'Renvoie les valeurs : 10 / 8 / 6 / 4 / 2 / 0 Next End Sub
FOR EACH NEXT
الحلقةFor Each تسمح لنا باستعراض كل
عنصر في مجموعة من العناصر ، على سبيل المثال تصفح كل خلية في نطاق من الخلايا:
Sub exemple() Dim cellule As Range For Each cellule In Range("A1:B3") cellule = cellule.Address Next End Sub
تصفح كل ورقة في المصنف:
Sub exemple() Dim feuille As Worksheet For Each feuille In Worksheets MsgBox feuille.Name Next End Sub
تصفح كل عنصر من عناصر الجدول:
Sub exemple() Dim tableau(2) As String tableau(0) = "A" tableau(1) = "B" tableau(2) = "C" For Each valeur In tableau MsgBox valeur Next End Sub
ترك الحلقة قبل الأوان
من الممكن ترك حلقة For قبل الأوان من
خلال التعليمات التالية:
Exit For 'Quitter une boucle For
في هذا المثال ، الهدف منه هو إرجاع رقم الصف الأول الذي يحتوي على القيمة 1.
عندما يتحقق هذا الهدف ، سيتم عرض الرقم
وتقطع الحلقة (لأنه في هذه الحالة ليست هناك حاجة لتجاوز الأسطر الأخرى):
Sub exemple() Dim i As Integer 'Boucle pour 100 lignes au maximum For i = 1 To 100 'Si la cellule vaut 1 If Cells(i, 1) = 1 Then 'Si l'objectif est atteint MsgBox "La cellule a été trouvée à la ligne " & i & " !" Exit For 'On quitte la boucle For End If Next End Sub
التعليمات الأخرى Exit :
Exit Do 'Quitter une boucle Do
Exit Sub 'Quitter une procédure
Exit Function 'Quitter une fonction