بالنسبة لـ vba excel التالي، انتقل إلى التالي. حلقة البيانات في VBA. مشروع "الدخل على الودائع"

هناك مواقف عندما يُطلب من برنامج VBA تنفيذ نفس مجموعة الإجراءات عدة مرات متتالية (أي تكرار نفس كتلة التعليمات البرمجية عدة مرات). يمكن القيام بذلك باستخدام حلقات VBA.

للحصول على بيان حلقة في Visual Basic

هيكل بيان الحلقة لفي Visual Basic يمكن تنظيمها في أحد النموذجين: كحلقة ل...التاليأو مثل دورة لكل.

دورة "من أجل...التالي"

دورة ل...التالييستخدم متغيرًا يأخذ القيم من نطاق معين بشكل تسلسلي. مع كل تغيير في قيمة المتغير، يتم تنفيذ الإجراءات الموجودة في نص الحلقة. من السهل فهم ذلك من خلال مثال بسيط:

لأن i = 1 إلى 10 Total = Total + iArray(i) Next i

في هذه الحلقة البسيطة ل...التالييتم استخدام المتغير أنا، والتي تأخذ القيم 1، 2، 3، ... 10 بالتتابع، ولكل من هذه القيم يتم تنفيذ كود VBA داخل الحلقة. وبالتالي، فإن هذه الحلقة تجمع عناصر المصفوفة iArrayفي متغير المجموع.

في المثال أعلاه، لم يتم تحديد خطوة زيادة الحلقة، وذلك لزيادة المتغير أنامن 1 إلى 10 الافتراضي هو الزيادة 1 . ومع ذلك، في بعض الحالات يكون من الضروري استخدام قيم زيادة مختلفة للحلقة. يمكن القيام بذلك باستخدام الكلمة الأساسية خطوة، كما هو موضح في المثال البسيط التالي.

لـ d = 0 إلى 10 الخطوة 0.1 dTotal = dTotal + d التالي d

بما أنه في المثال أعلاه تم ضبط خطوة الزيادة على 0.1 ، ثم المتغير dTotalلكل تكرار للدورة يأخذ القيم 0.0، 0.1، 0.2، 0.3، ... 9.9، 10.0.

لتحديد خطوة الحلقة في VBA، يمكنك استخدام قيمة سالبة، على سبيل المثال، مثل هذا:

لأني = 10 إلى 1 الخطوة -1 iArray(i) = i التالي i

وهنا خطوة الزيادة -1 ، وبالتالي فإن المتغير أنامع كل تكرار للدورة يأخذ القيم 10، 9، 8، ... 1.

لكل حلقة

دورة لكلتبدو وكأنها دورة ل...التاليولكن بدلاً من التكرار عبر تسلسل قيم متغير العداد لكلينفذ مجموعة من الإجراءات لكل كائن في مجموعة محددة من الكائنات. في المثال التالي، باستخدام حلقة لكليسرد كافة الأوراق الموجودة في مصنف Excel الحالي:

تعتيم الورقة كورقة عمل لكل ورقة في أوراق العمل MsgBox "تم العثور على ورقة:" & wSheet.Name الورقة التالية

الخروج من أجل مشغل مقاطعة الحلقة

المشغل أو العامل الخروج لتستخدم لمقاطعة الدورة. بمجرد العثور على هذا البيان في الكود، ينهي البرنامج تنفيذ الحلقة ويستمر في تنفيذ العبارات الموجودة في الكود مباشرة بعد هذه الحلقة. يمكن استخدام هذا، على سبيل المثال، للبحث عن قيمة معينة في مصفوفة. للقيام بذلك، استخدم حلقة للبحث في كل عنصر من عناصر المصفوفة. بمجرد العثور على العنصر المطلوب، ليست هناك حاجة للبحث في الباقي - تتم مقاطعة الدورة.

تطبيق المشغل الخروج لموضح في المثال التالي. هنا تتكرر الحلقة خلال 100 إدخال في المصفوفة وتقارن كل منها بقيمة المتغير dVal. إذا تم العثور على تطابق، سيتم مقاطعة الحلقة:

For i = 1 إلى 100 إذا كانت dValues(i) = dVal ثم IndexVal = i اخرج للنهاية إذا كان التالي i

القيام بالحلقة أثناء التكرار في Visual Basic

دورة افعل اثناءينفذ كتلة من التعليمات البرمجية طالما تم استيفاء شرط معين. وفيما يلي مثال على هذا الإجراء الفرعية، حيث يتم استخدام حلقة افعل اثناءيتم عرض أرقام فيبوناتشي التي لا تتجاوز 1000 بشكل تسلسلي:

"يقوم الإجراء الفرعي بطباعة أرقام فيبوناتشي لا تتجاوز 1000 Sub Fibonacci() Dim i As Integer "عداد للإشارة إلى موضع عنصر في التسلسل Dim iFib As Integer " يخزن القيمة الحالية للتسلسل Dim iFib_Next As Integer " القيمة التالية للتسلسل Dim iStep As Integer "تخزن حجم الزيادة التالية" تهيئة المتغيرات i و iFib_Next i = 1 iFib_Next = 0 "سيتم تنفيذ حلقة Do while حتى تتجاوز قيمة رقم فيبوناتشي الحالي 1000 Do بينما iFib_Next< 1000 If i = 1 Then "особый случай для первого элемента последовательности iStep = 1 iFib = 0 Else "сохраняем размер следующего приращения перед тем, как перезаписать "текущее значение последовательности iStep = iFib iFib = iFib_Next End If "выводим текущее число Фибоначчи в столбце A активного рабочего листа "в строке с индексом i Cells(i, 1).Value = iFib "вычисляем следующее число Фибоначчи и увеличиваем индекс позиции элемента на 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

في المثال المذكور، الشرط iFib_Next< 1000 فحص في بداية الدورة. لذلك، إذا كانت القيمة الأولى iFib_Nextإذا كان أكثر من 1000، فلن يتم تنفيذ الحلقة ولو مرة واحدة.

طريقة أخرى لتنفيذ حلقة افعل اثناء- ضع الشرط ليس في البداية، بل في نهاية الحلقة. في هذه الحالة، سيتم تنفيذ الحلقة مرة واحدة على الأقل، بغض النظر عما إذا كان الشرط صحيحًا أم لا.

تخطيطي مثل هذه الدورة افعل اثناءمع التحقق من الشرط في النهاية سيبدو كما يلي:

افعل...التكرار أثناء iFib_Next< 1000

هل حتى حلقة في Visual Basic

دورة افعل حتىتشبه الى حد كبير دورة افعل اثناء: يتم تنفيذ كتلة التعليمات البرمجية الموجودة في نص الحلقة مرارًا وتكرارًا حتى يتم استيفاء الشرط المحدد (نتيجة التعبير الشرطي هي حقيقي). في الإجراء التالي الفرعيةباستخدام حلقة افعل حتىيستخرج القيم من جميع الخلايا في العمود أورقة العمل حتى يتم العثور على خلية فارغة في العمود:

IRow = 1 Do until IsEmpty(Cells(iRow, 1)) "يتم تخزين قيمة الخلية الحالية في صفيف dCellValues ​​dCellValues(iRow) = Cells(iRow, 1).Value iRow = iRow + 1 Loop

في المثال أعلاه الشرط فارغة (خلايا (iRow، 1))تقع في بداية الهيكل افعل حتىلذلك سيتم تنفيذ الحلقة مرة واحدة على الأقل إذا لم تكن الخلية الأولى التي تم التقاطها فارغة.

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

افعل ... قم بالتكرار حتى IsEmpty(Cells(iRow, 1))

تصريحات حلقة

في فبا هناك نوعان رئيسيان من الحلقات: الحلقات ذات العداد (البارمترية) والحلقات ذات الشرط (التكرارية).

يتم استخدام حلقات العداد في الحالات التي يكون فيها من الضروري تنفيذ إجراءات معينة لعدد معين من المرات.

يتم استخدام الحلقات الشرطية عندما يجب تكرار إجراءات معينة في البرنامج حتى يتم استيفاء شرط معين.

حلقات مع المعلمةل...التالي

هيكل الدورة:

ل Cycle_parameter = Primary_Valueل القيمة النهائية

[خطوة خطوة]

العاملين

[الخروج ل]

التالي [معلمة_الدورة]

حيث ل الكلمة الرئيسيةفبا (من)، تشير إلى بداية الدورة؛

يتم تعريف متغير حلقة_المعلمة على أنه عداد حلقة؛

Initial_Value رقم يحدد القيمة الأولية لمعلمة الحلقة؛

إلى الكلمة الرئيسيةفبا (قبل) قسمة

القيمة الأولية والمعرفة النهائية؛

Final_Value رقم يحدد قيمة معلمة الحلقة،

وعندها تنتهي الدورة؛

الكلمة الأساسية الخطوةفبا (خطوة) تستخدم ل

مواصفات خطوة الحلقة، وسيطة اختيارية؛

خطوة رقم يحدد خطوة الدورة، أي. القيمة التي

يزيد (أو ينقص) قيمة المعلمة

دورة في كل خطوة. يمكن أن يكون هذا الرقم

سلبي؛

الخروج ل مشغل الخروج المبكر من الحلقة (اختياري)؛

التالي الكلمة الرئيسيةفبا (التالي) يدل على

نهاية الدورة.

عمل الدورة:

الخطوة 1 أولاً، يتم تحديد معلمة الحلقة، ويتم حساب القيم الأولية والنهائية لهذا المتغير وتخزينها.

الخطوة 2 يتم تعيين قيمة أولية لمعلمة الحلقة.

الخطوة 3 تتم مقارنة القيمة الأولية لمعلمة الحلقة بالقيمة النهائية.

إذا كانت معلمة الحلقة أكبر من القيمة النهائية، فسيخرج البرنامج فورًا من الحلقة وينتقل إلى سطر التعليمات البرمجية الذي يتبع الحلقة.

الخطوة 4 يتم تنفيذ جسم الحلقة.

الخطوة 5 بعد تنفيذ جسم الحلقة، يتم تعيين القيمة التالية لمعلمة الحلقة. انتقل إلى الخطوة 3.

ملحوظة.

1. إذا تم استخدام كلمة رئيسيةخطوة ، ثم تتغير معلمة الحلقة وفقًا للرقم المحدد بعد هذه الكلمة. إذا كانت الكلمةخطوة غائبة، فإن قيمة الخطوة تساوي واحدًا.

مثال 1.

لأني = 0 إلى 10 الخطوة 2 (القيمة I سوف تزيد بنسبة 2)

2. لـ...الحلقة التالية يمكن إنهاؤها مبكرًا عند الوصول إلى أي شرط. للقيام بذلك، في المكان المناسب في الحلقة، تحتاج إلى وضع عامل التشغيلالخروج ل.

مثال 2.

خافت S كعدد صحيح

خافت ي كعدد صحيح

س = 2

ل ي = 1 إلى 10

ق = س + ي

إذا S > 6 ثم

الخروج ل (اخرج من الحلقة إذا كانت القيمةق > 6)

إنهاء إذا

التالي ي

صندوق الرسائل(س)

الحلقات الشرطية (التكرارية)

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

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

بناء الجملة:

أين تفعل الكلمة الرئيسية (افعل)؛

بينما الكلمة الرئيسية (حتى الآن)؛

حتى الكلمة الرئيسية (حتى)؛

حلقة كلمة رئيسية تشير إلى نهاية الدورة؛

<условие>تعبير منطقي يتم التحقق من حقيقته

في بداية كل تنفيذ لجسم الحلقة؛

<тело_цикла>التسلسل التعسفي للمشغلين؛

افعل...أثناء البناء يقرأ: افعل بينما يتم استيفاء الشرط. في التصميمافعل...أثناء

افعل... حتى يقرأ البناء: افعل حتى يتم استيفاء الشرط. في التصميمافعل...حتى لزيادة الخطوة، يجب عليك كتابة عامل خاص، لأن فيه، على عكس التصميمل ، لا يتم ذلك تلقائيًا.

الحالة مكتوبة بعد الكلمة الأساسيةحتى ، يتم التحقق منه في نهاية كل تكرار (بعد تنفيذ نص الحلقة). لاحظ أنها لا تعمل بنفس الطريقة تمامًا كما في الحلقةبينما . إذا كان الشرط صحيحا (حقيقي )، ثم تنتهي الحلقة. إذا لم يتم استيفاء الشرط (خطأخطأ شنيع )، ثم يتم تنفيذ جسم الحلقة مرة أخرى.

مثال 1.

صياغة المشكلة. حساب مجموع سلسلة محدودة باستخدام إجراء روتيني.

تكنولوجيا تنفيذ المهام:

1. البيانات الأولية:ط  ز

النتيجة: S  R .

2.اكتب الإجراء المخصص التالي في وحدة المشروع القياسية باستخدام حلقة ذات شرط مسبقبينما:

ملخص فرعي ()

خافت S كعدد صحيح

خافت ط كعدد صحيح

س = 0

ط = 1

افعل بينما أنا<= 10

س = س + ط ^ 2

ط = ط + 1

حلقة

صندوق الرسائل(س)

نهاية الفرعية

3.اكتب الإجراء المخصص التالي في وحدة المشروع القياسية باستخدام حلقة ذات شرط مسبقحتى:

ملخص فرعي ()

خافت S كعدد صحيح

خافت ط كعدد صحيح

س = 0

ط = 1

افعل حتى > 10

س = س + ط ^ 2

ط = ط + 1

حلقة

صندوق الرسائل(س)

نهاية الفرعية

4 اكتب الإجراء المخصص التالي في وحدة المشروع القياسية باستخدام حلقة ذات شرط لاحقبينما:

ملخص فرعي ()

خافت S كعدد صحيح

خافت ط كعدد صحيح

س = 0

ط = 1

س = س + ط ^ 2

ط = ط + 1

حلقة بينما أنا<= 10

صندوق الرسائل(س)

نهاية الفرعية

5 اكتب الإجراء المخصص التالي في وحدة المشروع القياسية باستخدام حلقة ذات شرط لاحقحتى:

ملخص فرعي ()

خافت S كعدد صحيح

خافت ط كعدد صحيح

س = 0

ط = 1

س = س + ط ^ 2

ط = ط + 1

حلقة حتى i> 10

صندوق الرسائل(س)

نهاية الفرعية

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

توفر لغات البرمجة هياكل تحكم مختلفة تتيح مسارات تنفيذ أكثر تعقيدًا.

تسمح لنا عبارة الحلقة بتنفيذ عبارة أو مجموعة من العبارات عدة مرات. يوجد أدناه عرض عام لبيان الحلقة في VBA.

يوفر VBA أنواع الحلقات التالية للتعامل مع متطلبات الحلقات. انقر على الروابط التالية للتحقق من تفاصيلها.

لحلقة

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

بناء الجملة

يوجد أدناه بناء جملة الحلقة في VBA.

للعداد = البداية إلى النهاية .... .... التالي

مخطط تدفق

يوجد أدناه تدفق التحكم في وضع الحلقة -

  • اكتملت الخطوة الأولى. تتيح لك هذه الخطوة تهيئة أي متغيرات للتحكم في الحلقة وزيادة متغير عداد الخطوات.
  • ثانيا يتم تقييم الحالة . إذا كان صحيحًا، فسيتم تنفيذ جسم الحلقة. إذا كانت خاطئة، فلن يتم تنفيذ نص الحلقة وينتقل تدفق التحكم إلى العبارة التالية مباشرة بعد حلقة For.
  • بعد تنفيذ حلقة For، ينتقل تدفق التحكم إلى العبارة التالية. يسمح لك هذا البيان بتحديث أي متغيرات التحكم في الحلقة. يتم تحديثه بناءً على قيمة عداد الخطوات.
  • يتم الآن تقييم الحالة مرة أخرى. إذا كان صحيحًا، فسيتم تنفيذ الحلقة وتكرار العملية (نص الحلقة، ثم زيادة الخطوة، ثم الشرط مرة أخرى). بمجرد أن يصبح الشرط خاطئًا، تنتهي حلقة For.

مثال

أضف زرًا وأضف الوظيفة التالية.

خاص فرعي Constant_demo_Click() Dim a As Integer a = 10 For i = 0 To a Step 2 MsgBox "القيمة هي i هي: " & i Next End Sub

عندما يتم تجميع التعليمات البرمجية أعلاه وتنفيذها، فإنه ينتج الإخراج التالي.

القيمة أنا هي: 0
القيمة أنا هي: 2
القيمة هي: 4
القيمة هي: 6
القيمة أنا هي: 8
القيمة أنا هي: 10

ينفذ سلسلة من العبارات عدة مرات ويختصر الكود الذي يتحكم في متغير الحلقة.

لحلقة

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

لكل حلقة تشبه For Loop؛ ومع ذلك، يتم تنفيذ الحلقة لكل عنصر في الصفيف أو المجموعة. لذلك، لن يكون عداد الخطوات موجودًا في هذا النوع من الحلقات. يتم استخدامه بشكل أساسي مع المصفوفات أو يستخدم في سياق الكائن نظام الملفاتللعمل بشكل متكرر.

بناء الجملة

يوجد أدناه بناء الجملة لكل حلقة في VBA.

لكل عنصر في المجموعة....التالي

مثال

Private Sub Constant_demo_Click() "الفاكهة عبارة عن مصفوفة Fruits = Array("apple"، "orange"، "cherries") أسماء الفاكهة الخافتة كمتغير "تتكرر باستخدام كل حلقة. لكل عنصر في الفاكهة اسم الفاكهة = اسم الفاكهة & العنصر & Chr(10) التالي MsgBox اسماء الفاكهة End Sub

عند تنفيذ الكود أعلاه، فإنه يطبع جميع أسماء الفواكه بعنصر واحد في كل سطر.

تفاحة
البرتقالي
الكرز

يتم تنفيذ ذلك إذا كان هناك عنصر واحد على الأقل في المجموعة ويتكرر لكل عنصر في المجموعة.

while..wind حلقة

في حلقة while... Wend، إذا كان الشرط صحيحًا، فسيتم تنفيذ كافة العبارات حتى يتم العثور على الكلمة الأساسية Wend.

إذا كان الشرط خاطئًا، تنتهي الحلقة وينتقل عنصر التحكم إلى العبارة التالية بعد الكلمة الأساسية Wend.

بناء الجملة

يوجد أدناه بناء جملة حلقة while..Wend في VBA.

بينما الشرط (الشروط) ... Wen

مخطط تدفق

مثال

Private Sub Constant_demo_Click() عداد خافت: العداد = 10 أثناء العداد< 15 " Test value of Counter. Counter = Counter + 1 " Increment Counter. msgbox "The Current Value of the Counter is: " & Counter Wend " While loop exits if Counter Value becomes 15. End Sub

عند تنفيذ الكود أعلاه، سيتم إخراج ما يلي في حقل الرسالة.

القيمة الحالية للعداد هي: 11
القيمة الحالية للعداد هي: 12
القيمة الحالية للعداد هي: 13
القيمة الحالية للعداد هي: 14
القيمة الحالية للعداد هي: 15

يؤدي هذا إلى التحقق من الحالة قبل تنفيذ نص الحلقة.

افعل .. أثناء الحلقة

يتم استخدام حلقة Do... while عندما نريد تكرار مجموعة من العبارات عندما يكون الشرط صحيحًا. يمكن التحقق من الحالة في بداية الحلقة أو في نهايتها.

بناء الجملة

يوجد أدناه بناء جملة Do...While في VBA.

افعل بينما الشرط......حلقة

مخطط تدفق

مثال

يستخدم المثال التالي حلقة Do... while للتحقق من الحالة في بداية الحلقة. يتم تنفيذ العبارات الموجودة داخل الحلقة فقط إذا أصبح الشرط صحيحًا.

الخاص Sub Constant_demo_Click() افعل بينما i< 5 i = i + 1 msgbox "The value of i is: " & i Loop End Sub

قيمة i هي: 1
قيمة i هي: 2
قيمة i هي: 3
قيمة i هي: 4
قيمة i هي: 5

بناء الجملة البديل

يوجد أيضًا بناء جملة بديل للحلقة Do... while التي تتحقق من الحالة في نهاية الحلقة. يتم شرح الفرق الرئيسي بين هذين النحوين في المثال التالي.

افعل ... ... حلقة أثناء الشرط

مثال

يستخدم المثال التالي حلقة Do... while للتحقق من الحالة في نهاية الحلقة. يتم تنفيذ البيانات داخل الحلقة مرة واحدة على الأقل، حتى لو كان الشرط خطأ.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 MsgBox "قيمة i هي: " & i Loop while i< 3 "Condition is false.Hence loop is executed once. End Sub

عند تنفيذ التعليمات البرمجية أعلاه، فإنه يطبع الإخراج التالي في مربع رسالة.

قيمة i هي: 11

سيتم تنفيذ عبارات do..While طالما أن الشرط صحيح. (أي) يجب تكرار الحلقة حتى يصبح الشرط خطأ.

افعل .. حتى الحلقة

لن يتم استخدام حلقة do ... intil عندما نريد تكرار مجموعة من العبارات عندما يكون الشرط خاطئًا. يمكن التحقق من الحالة في بداية الحلقة أو في نهايتها.

بناء الجملة

يوجد أدناه بناء الجملة للحلقة Do..Until في VBA.

افعل حتى الشرط ... ... حلقة

مخطط تدفق

مثال

يستخدم المثال التالي Do... Before Loop لاختبار الشرط في بداية الحلقة. يتم تنفيذ العبارات الموجودة داخل الحلقة فقط إذا كان الشرط خاطئًا. ويخرج من الحلقة عندما يصبح الشرط صحيحا.

Private Sub Constant_demo_Click() i = 10 Do until i>15 "الشرط خطأ. ومن ثم سيتم تنفيذ الحلقة i = i + 1 msgbox ("قيمة i هي: " & i) Loop End Sub

عند تنفيذ التعليمات البرمجية أعلاه، فإنه يطبع الإخراج التالي في مربع رسالة.

قيمة i هي: 11
قيمة i هي: 12
قيمة i هي: 13
قيمة i هي: 14
قيمة i هي: 15
قيمة i هي: 16

بناء الجملة البديل

يوجد أيضًا بناء جملة بديل، Do... Before Loop، والذي يختبر الحالة في نهاية الحلقة. يتم شرح الفرق الرئيسي بين هذين النحوين من خلال المثال التالي.

افعل ... ... حلقة حتى الشرط

مخطط تدفق

مثال

يستخدم المثال التالي Do...Before حلقة لاختبار شرط في نهاية الحلقة. يتم تنفيذ البيانات داخل الحلقة مرة واحدة على الأقل، حتى لو كان الشرط صحيحًا.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 msgbox "قيمة i هي: " & i Loop until i more15 "الشرط صحيح. وبالتالي يتم تنفيذ الحلقة مرة واحدة. End Sub

عند تنفيذ التعليمات البرمجية أعلاه، فإنه يطبع الإخراج التالي في مربع رسالة.

قيمة i هي: 11

سيتم تنفيذ عبارات do..Until طالما أن الشرط خطأ. (أي) يجب تكرار الحلقة حتى يتحقق الشرط.

سجلات التحكم في الدورة

تغير بيانات التحكم في الحلقة التنفيذ خارج تسلسلها الطبيعي. عندما يترك التنفيذ النطاق، لا يتم تنفيذ كافة عبارات الحلقة الأخرى.

بيان التحكم والوصف

مخرجات المشغل

يتم استخدام Exit for عندما نريد الخروج من For Loop بناءً على معايير معينة. عند تنفيذ Exit For، ينتقل عنصر التحكم إلى العبارة التالية مباشرةً بعد حلقة For.

بناء الجملة

يوجد أدناه بناء جملة "الخروج للبيان" في VBA.

مخطط تدفق

مثال

يستخدم المثال التالي Exit For. إذا وصل العداد إلى 4، تنتهي حلقة For وينتقل عنصر التحكم إلى العبارة التالية مباشرة بعد حلقة For.

Private Sub Constant_demo_Click() Dim a As Integer a = 10 For i = 0 To a Step 2 "i هو متغير العداد ويتم زيادته بمقدار 2 MsgBox ("القيمة هي i هي: " & i) إذا i = 4 ثم i = i * 10 "يتم تنفيذ هذا فقط إذا i=4 MsgBox ("القيمة هي i هي:" & i) Exit For "Exited When i=4 End If Next End Sub

عند تنفيذ التعليمات البرمجية أعلاه، فإنه يطبع الإخراج التالي في مربع الرسالة.

القيمة أنا هي: 0
القيمة أنا هي: 2
القيمة هي: 4
القيمة هي: 40

ينهي عبارة For Loop وينقل التنفيذ إلى العبارة مباشرة بعد الحلقة

قم بالخروج

يتم استخدام بيان Exit Do عندما نريد الخروج من Do Loops بناءً على معايير معينة. يمكن استخدامه في كل من حلقات Do Do...While وDo...Before.

عند تنفيذ Exit Do، ينتقل التحكم إلى العبارة التالية مباشرة بعد Do Loop.

بناء الجملة

يوجد أدناه بناء جملة عبارة Exit Do في VBA.

مثال

يستخدم المثال التالي Exit Do. إذا وصل العداد إلى 10، فسينتهي سطر الإخراج وينتقل التحكم إلى العبارة التالية مباشرة بعد حلقة For.

Private Sub Constant_demo_Click() i = 0 افعل بينما i<= 100 If i >10 ثم قم بالخروج، افعل "Loop Exits if i>10 End If MsgBox ("قيمة i هي: "&i) i = i + 2 Loop End Sub

عند تنفيذ التعليمات البرمجية أعلاه، فإنه يطبع الإخراج التالي في مربع رسالة.

قيمة i هي: 0
قيمة i هي: 2
قيمة i هي: 4
قيمة i هي: 6
قيمة i هي: 8
قيمة i هي: 10

يكمل عبارة Do while وينقل التنفيذ إلى العبارة مباشرة بعد الحلقة

العمل المخبري على أساسيات البرمجة

2.1. جدولة الوظائف الممثلة تحليليا
والتقارب في مكان قريب

الهدف من العمل

· ترسيخ المعرفة النظرية حول أساسيات تنظيم الهياكل المتفرعة والدورية.

· اكتساب مهارات البرمجة العملية باستخدام الهياكل المتفرعة والدورية في نظام Visual Basic.

هناك ثلاثة أنواع من عبارات الحلقة في VB:

دورة العد: ل...إلى...التالي

حلقات بشروط مسبقة: افعل بينما...حلق، افعل حتى...حلق، بينما...ننتهي

· حلقات مع شروط لاحقة: افعل...حلق في حين، افعل...حلق حتى.

حلقة العد - تسمح لك بالتنقل بين مجموعة من العبارات لعدد محدد من المرات. بناء الجملة الخاص به هو كما يلي:

ل عداد = يبدأل نهاية

[العاملين]

[العاملين]

التالي [ عداد]

معامل عدادهو متغير رقمي (عدد صحيح، نوع حقيقي أو تاريخ، متغير، نوع العملة) يتم زيادته تلقائيًا بعد كل تكرار. القيمة البدائية عداديساوي المعلمة يبدأ،والمعلمة النهائية – نهاية.إذا لم يتم تحديدها، تعتبر الخطوة مساوية لـ 1، ويمكن تغيير قيمة الخطوة. يمكن أن يكون رقمًا موجبًا أو سالبًا.

هناك أربعة بنيات نحوية للحلقة Do....Loop:

يتم تنفيذ العبارات بين الكلمات الأساسية Do... Loop لعدد محدد من المرات حسب الحالة. على سبيل المثال، في جزء البرنامج التالي، عندما يكون C = 100، سيتم استيفاء الشرط وسيتم إدخال الحلقة. داخل الحلقة، يتم استدعاء الإجراء ويتم تقليل قيمة C بمقدار 1. ثم يتم التحقق من الشرط (C > 0) مرة أخرى ويتم تنفيذ مشغلي الحلقة مرة أخرى (سيتم تنفيذهم 100 مرة إجمالاً)، حتى C = 0. عندما يصبح الشرط C > 0 خطأ وتتوقف الحلقة.

افعل بينما C> 0

تم تنفيذ نفس جزء البرنامج باستخدام حلقة مع شرط مسبق في بناء الجملة 2:

في هذه الحالة، تعمل الحلقة طالما أن الشرط False، على عكس الحالة السابقة، أي أنها تستمر قبلاستيفاء الشرط C = 0.

عبارات الحلقة 3 و4 متشابهة جدًا في بناء الجملة مع الجملتين الأوليين باستثناء الشرط لايتم حسابه حتى يتم تنفيذ الحلقة مرة واحدة على الأقل.

يمكن لتركيبات جمل الحلقة هذه استخدام عبارات الخروج من الحلقة غير المشروطة Exit For وExit Do لنقل التحكم إلى المشغل خلف الحلقة. على سبيل المثال، في جزء البرنامج التالي، إذا كانت القيمة الأولية لـ C هي >50، فستتوقف الحلقة على الفور.



افعل حتى ج<= 0

MsgBox "ابدأ" القيمة أكبر من المقبول"، "خطأ في الإدخال"

تم استخدام حلقة while...Wend في الإصدارات المبكرة من Visual Basic. بناء الجملة الخاص به هو كما يلي:

بينما<условие>

<Операторы>

على عكس حلقة Do..Loop، لا تحتوي حلقة while ..Wend على خيار ثانٍ يتم فيه التحقق من الشرط في نهاية الحلقة. بالإضافة إلى ذلك، لا يوجد بيان خروج للحلقة، مثل Exit Do.

فبا. تنظيم الدورات.

تُستخدم عبارات الحلقة لتكرار إجراء أو مجموعة من الإجراءات لعدد محدد من المرات. يمكن تحديد عدد التكرارات (تكرارات الحلقة) مسبقًا أو حسابها.

يدعم VBA نوعين من بنيات التكرار:

  1. حلقات ذات عدد ثابت من التكرار ( حلقات مواجهة).
  2. حلقات ذات عدد غير محدد من التكرار ( حلقات مشروطة).

لجميع أنواع الدورات يتم استخدام هذا المفهومهيئة الحلقة ، الذي يحدد كتلة من العبارات المحصورة بين عبارات البداية والنهاية للحلقة. يتم استدعاء كل تكرار لتنفيذ عبارات جسم الحلقةتكرار

دورات ثابتة

يوفر VBA بنيتي تحكم لتنظيم حلقة ثابتة: For... Next (حلقة مع عداد) وFor Each... Next (حلقة مع تعداد).

المشغل ل...التالي هذه حلقة مضادة نموذجية تنفذ عددًا محددًا من التكرارات. بناء جملة العبارة For...Next هو:

ل<счетчик> = <начЗначение>الذي - التي<конЗначение>

<блок операторов>

التالي [<счетчик>]

مثال على استخدام عامل التشغيل For...Next.

القائمة 1. لـ... المشغل التالي

‘ المهمة: إنشاء برنامج يستقبل رقمين من المستخدم.

‘ يجمع كافة الأرقام في النطاق المحدد بهذين الرقمين، وبعد ذلك

يعرض المبلغ الناتج.

العينة الفرعية 7()

Dim i as Integer 'cycle counter

Dim sStart "قيمة العداد الأولية".

خافت قيمة العداد النهائي

Dim sSum هو المبلغ الناتج الطويل

sStart = InputBox("أدخل الرقم الأول:")

sEnd = InputBox("أدخل الرقم الثاني:")

المجموع = 0

لأني = CInt(sStart) إلى CInt(sEnd)

sSum = sSum + i

بعدها انا

MsgBox "مجموع الأرقام من " & sStart & " إلى " & sEnd & " هو : " & sSum

نهاية الفرعية

بيان حلقة لكل...التاليينتمي إلى فئة مشغلي نوع الكائن، أي. ينطبق في المقام الأول على المجموعاتالكائنات، وكذلك المصفوفات . يتم تنفيذ جسم الحلقة لعدد محدد من المرات، يتوافق مع عدد العناصر في المصفوفة أو المجموعة. لكل...تنسيق البيان التالي:

لكل<элемент>في<группа> <блок операторов>التالي [<элемент>]

الحلقات الشرطية (حلقات غير محددة)

يتم استخدام الحلقات الشرطية عندما يلزم تنفيذ الإجراءات المتكررة فقط في ظل ظروف معينة. لم يتم تحديد عدد التكرارات، وبشكل عام يمكن أن يساوي الصفر (على وجه الخصوص، للحلقات ذات الشرط المسبق). يوفر VBA للمطورين العديد من هياكل التحكم لتنظيم الحلقات الشرطية:

  • أربعة أنواع من Do..Loops، والتي تختلف في نوع الحالة التي يتم فحصها والوقت الذي يستغرقه إكمال هذا الفحص.
  • حلقة مستمرة أثناء...الذهاب.

تعتبر حلقة Do while... حلقة نموذجية حلقة بشرط مسبق. يتم التحقق من الشرط قبل تنفيذ جسم الحلقة. وتستمر الدورة في عملها حتى<условие>يتم تنفيذه (أي له القيمة True). بما أن الفحص يتم في البداية، فقد لا يتم تنفيذ جسم الحلقة أبدًا. افعل بينما... تنسيق الحلقة:

افعل اثناء<условие>

<блок операторов>

حلقة

القائمة 2. افعل بينما... حلقة

‘ المهمة: إنشاء برنامج يتطلب إدخال المستخدم

"تسلسل تعسفي للأرقام." يجب إنهاء الإدخال

‘ فقط بعد أن يتجاوز مجموع الأرقام الفردية المدخلة 100.

العينة الفرعية 8()

Dim OddSum كمجموع عدد صحيح للأعداد الفردية

Dim OddStr As String عبارة عن سلسلة ذات أرقام فردية

Dim Num "لقبول الأرقام المدخلة".

OddStr = "" 'تهيئة سلسلة الإخراج

OddSum = 0 'تهيئة OddSum

افعل بينما OddSum< 100 ‘начало цикла

Num = InputBox("أدخل رقمًا: ")

إذا (رقم التعديل 2)<>0 ثم "التحقق من التكافؤ".

OddSum = OddSum + Num 'تراكم مجموع الأعداد الفردية

OddStr = OddStr & Num & ” ”

إنهاء إذا

حلقة

"اطبع سلسلة بأرقام فردية."

موجه MsgBox:=”الأرقام الفردية:” & OddStr

نهاية الفرعية

قم... بتنفيذ حلقة أثناء البيانمصممة للتنظيمحلقة مع الشرط اللاحق. يتم التحقق من الشرط بعد تنفيذ جسم الحلقة مرة واحدة على الأقل. وتستمر الدورة في عملها حتى<условие>يبقى صحيحا. افعل... التكرار أثناء التنسيق:

يفعل<блок операторов>حلقة بينما<условие>

القائمة 3. حلقة مع الشرط اللاحق

‘ المهمة: إنشاء برنامج للعبة "خمن الرقم". يجب أن يكون البرنامج عشوائيا

‘ طريقة لتوليد رقم في النطاق من 1 إلى 1000، يجب على المستخدم

‘ خمن هذا الرقم. يقوم البرنامج بعرض تلميح لكل رقم تم إدخاله

' "الى حد ما".

العينة الفرعية 8()

Randomize Timer 'تهيئة مولد الأرقام العشوائية

خافت الرسالة كسلسلة رسائل

تعتيم الرقم السري طويلًا، ورقم المستخدم كمتغير

البدء: SecretNumber = Round(Rnd * 1000) ‘ الرقم الذي تم إنشاؤه بواسطة الكمبيوتر

رقم المستخدم = رقم فارغ أدخله المستخدم

افعل اللعب

حدد حالة الأحرف صحيحة

الحالة فارغة (رقم المستخدم): msg = "أدخل رقمًا"

رقم مستخدم الحالة > الرقم السري: msg = "عدد كبير جدًا!"

رقم مستخدم الحالة< SecretNumber: msg = “Слишком мало!”

إنهاء التحديد

رقم المستخدم = InputBox(موجه:=msg, العنوان:=”خمن الرقم”)

حلقة أثناء رقم المستخدم<>الرقم السري

' فحص

إذا كان MsgBox("التشغيل مرة أخرى؟"، vbYesNo + vbQuestion، "لقد خمنت ذلك!") = vbYes إذن

انتقل إلى البدء

إنهاء إذا

نهاية الفرعية

الحلقات تفعل حتى... حلقة وتفعل... حلقة حتى هي انقلابات للحلقات الشرطية التي تمت مناقشتها سابقًا. بشكل عام، تعمل بشكل مشابه، باستثناء أنه يتم تنفيذ جسم الحلقة إذا كان الشرط خاطئًا (أي:<условие>= خطأ). افعل حتى... تنسيق الحلقة:

افعل حتى<условие> <блок операторов>حلقة

افعل... حلقة حتى تنسيق الحلقة:

<блок операторов>

حلقة حتى<условие>

المهمة العملية:أعد كتابة البرامج في القائمتين 10 و11 باستخدام عبارات الحلقة المقلوبة.

حلقة أثناء...الذهاب ينطبق أيضًا على الحلقات الشرطية. هذا المشغليتوافق تمامًا مع بنية Do while... Loop. بينما...تنسيق حلقة Wend:

بينما<условие>

<блок операторов>

ويند

السمة المميزة لهذا المشغل هي الاستحالة الإنهاء القسري(مقاطعة) جسم الحلقة (لا يعمل عامل التشغيل Exit Do في حلقة while ... Wend).

مقاطعة الدورة

لإنهاء التكرار مبكرًا والخروج من الحلقة، يتم استخدام عبارة Exit. هذا العامل قابل للتطبيق في أي بنية دائرية باستثناء while... Wend. بناء الجملة العام لاستخدام Exit لكسر الحلقة هو:

<начало_цикла>

[<блок операторов1>]

خروج (من أجل | افعل)

[<блок операторов2>]

<конец_цикла>

عند تنفيذ عبارة الخروج، تتم مقاطعة الحلقة ويتم نقل التحكم إلى العبارة التي تلي العبارة<конец_цикла>. قد يكون هناك عدة عبارات خروج في نص الحلقة.

القائمة 4. الخروج القسري من الحلقة

العينة الفرعية9()

لأني = 1 إلى 10000000

إذا كنت = 10، فقم بالخروج من أجل ‘اخرج من الحلقة عندما يصل العداد إلى 10

التالي




قمة