أساسيات VBA إكسل : كيفية استخدام الحلقات التكرارية في vba

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


كيفية استخدام الحلقات التكرارية في 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

Comments
No comments
Post a Comment



    Reading Mode :
    Font Size
    +
    16
    -
    lines height
    +
    2
    -