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

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

قام بنشر (معدل)

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

  • 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
قام بنشر
18 دقائق مضت, الزباري said:

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

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

أنا قلت لك كل حسب علمه:rol:

جزاكم الله خيراً منكم نستفيد

قام بنشر
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