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

دليل وظائف LOOP


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

السلام عليكم ورحمة الله وبركاته، أحببت في هذه الصفحة أن أعرض لكم الفرق بين وظيفة كل من

  • The For Loop
  • The Do Until Loop
  • The Do While Loop
  • وذلك عن طريق طرح بعض الأمثلة العملية في ذلك، وقد نستعين من بعض الخبراء لإثراء الموضوع لجعله أكثر حيوية.. تابعونا إن كان الموضوع مجدي.
تم تعديل بواسطه الزباري
التنسيق
  • Like 6
رابط هذا التعليق
شارك

بدأ ب بسم الله

1- الدالة For  loop:

الغرض من ذلك هو تكرار مجموعة معينة من البيانات لعدد معين من المرات

 

لو طُلب منك أن تكتب الأرقام من 1 إلى 5 في العمود الأول في الإكسل لكتبت التالي:

Cells(1, 1).Value = 1 

Cells(2, 1).Value = 2

Cells(3, 1).Value = 3

Cells(4, 1).Value = 4

Cells(5, 1).Value = 5

لكن لو طُلب منك أن تكتب الأرقام من 1 إلى 100 فستحتاج إلى 100 سطر لكتابة الكود!! وهذا يعتبر أمر شاق للمبرمج

وهنا أتت هذه الدالة لتختصر الوقت والجهد، وسيكون الكود كالتالي:

Dim i As Integer

For i = 1 To 100
    Cells(i, 1).Value = i
Next i

جميل جداً.. طيب لو أردنا أن نطبق الكود ليطبع الأرقام على عمودين متجاورين فماذا نفعل؟!

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

السلام عليكم. جزاك الله خيراً على هذا الموضوع.

شرح جميل. هل بالإمكان أرفاق مثال لمعرفة طريقة تطبيق الكود وفهمها بشكل أسرع. لأنني أقرأ هذه الأكواد ولا أفهمها أو أفهم طريقة التطبيق لأي أعمال لدي. ولك جزيل الشكر.

تم تعديل بواسطه morestudy
رابط هذا التعليق
شارك

50 دقائق مضت, morestudy said:

السلام عليكم. جزاك الله خيراً على هذا الموضوع.

شرح جميل. هل بالإمكان أرفاق مثال لمعرفة طريقة تطبيق الكود وفهمها بشكل أسرع. لأنني أقرأ هذه الأكواد ولا أفهمها أو أفهم طريقة التطبيق لأي أعمال لدي. ولك جزيل الشكر.

تفضل أخي الكريم تم عمل مثال بسيط بمجرد أن تضغط زر الماكرو في المثال سوف يكتب من 1 - 100 في الخلية A1 إلى A100

LOOP.rar

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

اعذرني يا أخيتوكل

لم أنتبه إلى ملفك

 

نرجع إلى سؤالنا..

لو أردنا أن نطبق الكود ليطبع الأرقام على عمودين متجاورين فماذا نفعل؟!

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

2 ساعات مضت, الزباري said:

انرجع إلى سؤالنا..

لو أردنا أن نطبق الكود ليطبع الأرقام على عمودين متجاورين فماذا نفعل؟!

يمكن تطبيق الكود التالي للكتابة في ثلاثة أعمدة

طبعاً هناك حلول أفضل ولكن كل حسب علمه


Dim i As Integer

For i = 1 To 100
    Cells(i, 1).Value = i
Next i
For i = 1 To 100
    Cells(i, 2).Value = i
Next i
For i = 1 To 100
    Cells(i, 3).Value = i
Next i

 

تم تعديل بواسطه توكل
  • Like 1
رابط هذا التعليق
شارك

امم.. يعني لو كنا عاوزين نكتب في مائة عمود فراح نكرر الكود مائة مرة .. يالطيف :')

بس بداية جيدة :clapping:

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

ببساطة نضيف حلقة تكرارية أخرى على الدرس السابق لتصبح كالتالي

 

Dim i As Integer
Dim j As Integer

For j = 1 To 2

    For i = 1 To 100
     Cells(i, j).Value = i
    Next i

Next j

 

لاحظ أننا عرفنا الحلقة التكرارية j  والتي تساوي 2 وهي عدد الأعمدة المطلوب تطبيق الكود عليها ، ولا تنسى بأن تغلق الحلقة التكرارية ب Next ، جرب أن تغير عدد الأعمدة في المرفق التالي.

 

الحلقة التكرارية2.rar

 

 

سؤالنا التالي: كيف أكرر الكود السابق على ثلاث شيتات؟ :blink:

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

السلام عليكم ورحمة الله

كود لترقيم 5 اعمدة متتالية  من 1 الى 500  كل عمود مائة رقم

Sub Serials()
For R = 1 To 100
For S = 6 To 10
Cells(R, S) = R + ((S - 6) * 100)
Next
Next
End Sub

 

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

12 دقائق مضت, زيزو العجوز said:

السلام عليكم ورحمة الله

كود لترقيم 5 اعمدة متتالية  من 1 الى 500  كل عمود مائة رقم


Sub Serials()
For R = 1 To 100
For S = 6 To 10
Cells(R, S) = R + ((S - 6) * 100)
Next
Next
End Sub

 

ما شاء الله زادكم الله من فضله كل يوم نتعلم شيئاً جديداً

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

تذكير بالسؤال: كيف أكرر الكود السابق على ثلاث شيتات؟

وللإجابة على ذلك نجيب على السؤال التالي:

كيف يتم تعريف اسم الشيت (sheet) باستخدام الكود؟

الإجابة: worksheets(1) و worksheet(2)  و worksheet(3)

وعليه يتم عمل حلقة تكراربة من 1 إلى 3 للشيت كالتالي:

Dim i As Integer
Dim j As Integer
Dim c As Integer

For c = 1 To 3
    For j = 1 To 2

        For i = 1 To 100
         Worksheets(c).Cells(i, j).Value = i
        Next i

    Next j
Next c

طبق الكود في المرفق ثم افتح sheet2 و sheet3

 

الحلقة التكرارية3.rar

 

وإلى هنا انتهت حلقتنا الأولى لهذا اليوم :closed:

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

2- الدالة Do until loop

الغرض من ذلك هو تكرار مجموعة معينة من البيانات إلى أن يتم يتحقق الشرط فعندها يتم إنهاء الحلقة التكرارية.

فمثلاً لو طُلب منك بأن تكتب أرقام متسلسلة في العمود الأول وتضع شرطاً بأن يتوقف عندما يكون الرقم يساوي 11، فعندها سيكون الكود كالتالي :

i = 1
Do Until i = 11
   Cells(i, 1) = i
   i = i + 1
Loop

لاحظ بأنه عندما تكون قيمة i = 11 فإنه يتوقف عن العمل ولا يكتب قيمتها.. شاهد المرفق لتعرف آلية العمل

 

do_until_01.rar

طيب .. ماذا يفرق لدينا لو استخدمنا i>11   ؟!!!

    i = 1
    Do Until i > 11
        Cells(i, 1) = i
        i = i + 1
    Loop

 

فهل ستكون النتيجة مختلفة؟!!!

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

2 ساعات مضت, الزباري said:

2- الدالة Do until loop

طيب .. ماذا يفرق لدينا لو استخدمنا i>11   ؟!!!


    i = 1
    Do Until i > 11
        Cells(i, 1) = i
        i = i + 1
    Loop

 

فهل ستكون النتيجة مختلفة؟!!!

هنا سيكتب الرقم  11 حتماً

جزاك الله خيرا وزادك علماً بانتظار المزيد

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

كيف نستخدم الدالة لكتابة أرقام متسلسلة من 1 إلى 10 على أن تبدأ في ال الخلية A5؟

الإجابة:

i = 1
Do Until i > 10
    Cells(i + 4, 1) = i
    i = i + 1
Loop

 شاهدالمرفق التالي:

do_until_02.rar

 

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

زائر
هذا الموضوع مغلق.
×
×
  • اضف...

Important Information