مايكروسوفت اكسس / استخدام دالة For

استخدام دالة For…Next في مايكروسوفت اكسس VBA

تستخدم الدالة For للدوران اي لتنفيذ امر معين ولكن لعدة مرات مثلا تصفح السجلات من 1 ولغاية السجل 25 لعمل شيئ معين في كل سجل.

الصيغة:
VBA
   For i = Start To End
Expretion
Next i
حيث ان 
Start = الرقم الذي يبدأ عنده الدوران 
End: الرقم الذي ينتهي عنده الدوران
Expretion: الكود الذي نريد تنفيذه في كل مرة

مثال:
في هذا المثال ستظهر لدينا رسالة تحتوي على قيمة المتغير i ولكن هذة الرسالة ستظهر 10 مرات 
VBA
   For i = 1 To 10
Msgbox i
Next i
وفي الكود اعلاه فان الزيادة او النقصان سيكون بمقدار 1 في كل مرة ولكن اذا اردنا ان نجعل مقدار الزيادة 3 في كل مرة فيمكننا اضافة كلمة Step والقيمة لها وبالتالي فان الكود سيكون:
VBA
For i = 1 To 10 Step 3
Msgbox i
Next i
واذا اردنا ان يكون الدوران بشكل تنازلي او عكسي فان ذلك ممكن وذلك بجعل قيمة Step قيمة سالبة، ولكن يجب الانتباه الى ان رقم البداية يجب ان يكون اكبر من رقم النهاية، ومثال على ذلك
VBA
     For i = 100 To 10 Step -10
Msgbox i
Next i

وفي كثير من الاحيان عندما تكون البداية او النهاية او طول الدورة متغيرة فانه يتم استخدام المتغيرات وليس تثبيت الارقام، فمثلا عدد السجلات متغير ولو اردنا استعراض السجلات بالتتالي من السجل الاول الى الاخير فان السجل الاول رقمه 1 اما الاخير فلا نعرف ما هو رقمة فممكن ان يكون 10 وبعد قليل يصبح 15 وهنا نستخدم المتغيرات في تحديد قيمة السجل الاخير وعلية ولاظهار الرسالة بعدد السجلات في الجدول Orders فان الكود  سيكون:
VBA
For i = 1 To DCount("*", "Orders")
Msgbox i
Next i











هناك تعليقان (2):

  1. اريد ارسال اميل متعدد لمجموعة من المستخدمين من خلال الاكسيس بمعنى( اريد ارسال مرتب الموظفين الى كل موظف على الايميل الخاص به) ملحوظة بيانات مفردات المرتب pdf وكل موظف لة رقم ثابت

    ردحذف
  2. صوت منخفض جدا وشىء يغيظ فى الشرح وفوكس غير جيد فى المشاهدة مشاهدة معتمة وكلام الكود غير واضح

    ردحذف