اذهب الي المحتوي
أوفيسنا

ِِِِِِِِشرح لكيفية تكرار ماكرو علي مجموعة خلايا


الردود الموصى بها

بعد اعداد ماكرو معين للتطبيق علي خلية

في أحيان كثيرة نحتاج علي تطبيق الماكرو علي عدة أسطر فى نفس الخلية

و لاختيار مجموعة الخلاية المكلوبة و تطبيق نفس الماكرو عليها

نستخدم الكود التالي:

و ما يلي هو عدد 2 كود مع شرح لكل سطر

الاول لطريقة بسيطة للتطبيق

و الثاني ، مع بعض الاضافات ن مثل الغاء ظهور الاحداث علي الشاشة و عمل عداد يظهر فى شريط الحالية ليخبرنا بالتقدم فى التطبيق

مرفق ملف به الكودان مع الشرح

علي أن تضع الكود المطلوب تكراره فى المكان المحدد

الشرح موجود مع الماكرو

اضغط ALT+F11

----

الاكواد :

Sub myloop1()

'تعريف متغير من أجل عدد الصفوف
  Dim MyRow As Long
'عد عدد الصفوف المختارة
  MyRow = selection.Rows.Count
'اختيار الخلية الاولي فى الخلايا المختارة
ActiveCell.Select
'بدء حلقة تكرارية للمرور علي جميع الصفوف
For i = 1 To MyRow



'ضع الكود الذي تريد تكراره هنــــــــــــا



'اختيار الخلية التي تلي الخلية الحالية - أسفلها
   ActiveCell.Offset(1, 0).Activate
'نهو الحلقة التكرارية للمرور علي جميع الصفوف
Next i

End Sub
و الثاني
Sub myloop2()

' by Mohamed Taher
' www.officena.net

'الغاء تفعيل اظهار ما يحدث علي الشاشة
Application.ScreenUpdating = False
'تعريف متغيران الاول لعدد الصفوف و الثاني لتثبيت العدد من أجل العداد
  Dim MyRow As Long, origraw As Long  '
'عد عدد الصفوف المختارة
  MyRow = selection.Rows.Count
'نقل العدد الي المتغير الخاص بتثبيت العدد
  origraw = MyRow
'اختيار الخلية الاولي فى الخلايا المختارة
ActiveCell.Select
'بدء حلقة تكرارية للمرور علي جميع الصفوف
For i = 1 To MyRow



'ضع الكود الذي تريد تكراره هنــــــــــــا



'اظهار العداد فى شريط الحالة
   Application.StatusBar = "Calculating ...." & _
   Format(i / origraw, "0.0%") & "       Please Wait......."
'اختيار الخلية التي تلي الخلية الحالية - أسفلها
   ActiveCell.Offset(1, 0).Activate
'نهو الحلقة التكرارية للمرور علي جميع الصفوف
Next i
'تمكين تفعيل اظهار ما يحدث علي الشاشة
    Application.ScreenUpdating = True
'الغاء ما كتب فى شريط الحالة أسفل الشاشة
    Application.StatusBar = False
End Sub

مثال لعمل حلقة علي كتابة رقم فى الخلايا المختارة

اختار الخلايامن أاعلي الي اسفل ثم شغل الماكرو

LOOP.rar

رابط هذا التعليق
شارك

  • 8 months later...

السلام عليكم ...

بالنسبة للحلقة التكرارية ، ألا يكون من الأفضل استخدام For Each وذلك لأننا بها تحقق ميزتين :

- عدم الحاجة لتفعيل الخلية المختبرة في كل دورة (في المثال أعلاه).

- عدم الحاجة لتغيير قيمة المتغير الدال على الهدف المختبر في كل دورة.

رابط هذا التعليق
شارك

السلام عليكم

في المثال اعلاه تفعيل الخلية ليس هدفا و انما مجرد مثال علي ما يحدث من فعل داخل الحلقة

و الحلقة تعمل دون التأثر به ان الغيناه

أي ان المرور علي الصفوف مثال لتوضيح ما يحدث فى الحلقة التكرارية

ان لم يكن ردي مناسبا لما تقصد فارجو التوضيح اكثر

مع تحياتي

رابط هذا التعليق
شارك

السلام عليكم ...

الموضوع متصل بالكود الموضوع لاختبار الخلايا ، وفي كلتا الأحوال سيكون استخدام الحلقة التكرارية بالاعتماد على متغير (كديل) أقل كفاءة من استخدام الحلقة For Each

رابط هذا التعليق
شارك

زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information