يفتح
يغلق

حدد أمثلة حالة vba excel. لغة برمجة فيجوال بيسك. برمجة الفروع. VBA حدد بناء جملة بيان الحالة

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

الكلمات الدالة يختارقضيةتستخدم مع العديد من المشغلين قضيةحيث كل مشغل قضيةيتحقق من حدوث شرط آخر ويتم تنفيذ فرع واحد فقط قضية.فرع قضيةقد تحتوي على واحدة أو أكثر أو لا تحتوي على عبارات VBA.

إختر حالة- بيان تحكم ينفذ واحدة من عدة كتل من البيانات اعتمادًا على قيمة التعبير.

يختارقضية Selection_expression

[ قضية Expression_list_1

[Operator_Block_1]

[قضية Expression_list_2 ]

[Operator_block_2]]

……………………………………………………………………………

[الحالة هlse

[Operator_Block_N]]

هاختصار الثانيسالمنتخب

– Selection_expression – أي تعبير رقمي أو رمزي؛

– Expression_list – كل قائمة عبارة عن قائمة من التعبيرات المنطقية مفصولة بفواصل؛ لها نفس نوع Choice_expression؛

-Statement_block - يحتوي على أي عدد من عبارات VBA.

عند تنفيذ البيان يختارقضيةيقوم VBA أولاً بتقييم Selection_Expression، ثم يقارن نتيجة هذا التعبير بكل تعبير مدرج في كل Expression_List . إذا كانت القيمة التي يمثلها Selection_Expression يطابق التعبير في Expression_List لأحد قضيةينفذ VBA ستيتمانبلوك لهذا البيان قضية.إذا كانت قيمة Selection_Expression يطابق أكثر من عامل قضية,VBA ينفذ البيانات فقط في الاول جملة مطابقة قضية.في كثير من الأحيان، يكون تعبير الاختيار هو ببساطة اسم متغير واحد، رياضي أو رقمي، وليس تعبيرًا منطقيًا. التعبيرات في Expression_List - هذه عادة تعبيرات منطقية.

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

إذا كانت قيمة Selection_Expression لا يتطابق مع أي من قضية، واختياري قضيةآخرموجود، يقوم VBA بتنفيذ العبارات التي يمثلها بيان_Block_N قبل الانتقال إلى المشغل بعد يختارقضية. كتلة المشغل الحالة هlseيتم تنفيذه فقط إذا كان Selection_Expression لا يفي بأي من الشروط قضية. تستخدم عادة للتعامل مع القيم غير المرغوب فيها. عمل المشغل يختارقضيةموضح من خلال مخطط الكتلة الموضح في الشكل. 5.

الشكل 5. رسم تخطيطي للتصميم يختارقضية

يجب أن تحتوي عناصر قائمة التعبير على أحد النماذج الثلاثة التالية:

Expression_1، Expression_2، …، Expression_N

تعبير تستعبير

أناسالتعبير مع العملية

– Expression_ – أي تعبير رقمي أو رمزي أو منطقي من نفس نوع تعبير التحديد؛

– التعبير مع العملية – تعبير يحتوي على أي من العمليات التالية:<, <=, >, >=, < >, =.

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

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

يمكنك استخدام تعبيرات أو حدود متعددة في كل شرط قضية. على سبيل المثال، الحالة 1 إلى 4، 7 إلى 9، 11، 13، هل > n %.

مثال 4.برنامج يقوم باحتساب الخصم حسب مبلغ الشراء.

الفرعيةسكيدكا ()

"تعريف الخصم (٪) حسب

"كمية البضائع المباعة

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

خافتالخلاصة كمفردة

الخلاصة = صندوق الإدخال("أدخل مبلغ الشراء"، "حساب الخصم"، 0)

لوالمجموع> 0 ثم

إختر حالةالخلاصة

القضية هي > 1000

القضية هي > 500

حالة أخرى

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

MsgBox""الخصم"" و"سكيدكا" و"%"

MsgBox"لم يتم تحديد مبلغ الشراء"

وفي مقال اليوم سنناقش بيان حالة تحديد VBA. يمكن استخدام VBA Select Case بدلاً من عبارات Excel Nested If المعقدة. وهذا يجعل تعليمات VBA البرمجية أسرع في التنفيذ وأسهل في الفهم.

تقوم عبارة Select-Case (وتسمى أيضًا باسم Switch Case في بعض اللغات) بالتحقق من متغير أو تعبير لحالات (قيم) مختلفة. إذا أصبحت أي حالة صحيحة، فسيتم تنفيذ هذه الحالة فقط ويتجاهل البرنامج جميع الحالات الأخرى.

إذا كنت تتذكر في مشاركتنا الأخيرة تحدثنا عن "كيف يمكنك".

بناء جملة بيان حالة تحديد VBA:

بناء الجملة كما يلي:

حدد حالة الحالة
قيمة الحالة_1
الكود المطلوب تنفيذه عندما يكون الشرط = value_1
قيمة الحالة_2
الكود المطلوب تنفيذه عندما يكون الشرط = value_2
قيمة الحالة_3
الكود المطلوب تنفيذه عندما يكون الشرط = value_3
حالة أخرى
رمز للتنفيذ عندما تكون جميع الحالات الأخرى خاطئة
إنهاء التحديد

هنا، يشير "الشرط" إلى المتغير أو التعبير الذي سيتم اختباره وعلى أساسه سيتم تنفيذ أي جزء من أجزاء التعليمات البرمجية.

"value_1" و"value_2" و"value_3" هي النتائج المحتملة لـ "الشرط". عندما يتطابق أي من هذه القيم مع "الشرط"، فسيتم تنفيذ كتلة الحالة المقابلة لها.

"Else" هو نوع من قيمة الحالة الافتراضية، والتي سيتم تنفيذها فقط عندما تتحول جميع عبارات الحالة المذكورة أعلاه إلى False. حالة "آخر" اختيارية ولكن بشكل عام يعتبر استخدامها ممارسة جيدة.

أمثلة على حالة التحديد في VBA:

الآن دعنا ننتقل إلى بعض الأمثلة العملية لبيانات الحالة.

مثال 1:حدد بيان الحالة مع التعبير.

في المثال أدناه، قمنا بتوفير شرط (أي a=b) لعبارة Select Case. إذا كان هذا صحيحًا، فسيتم تنفيذ الحظر "Case True"، وإذا كان خطأ، فسيتم تنفيذ الحظر "Case False".

Sub Select_Case_Example() "أدخل قيمة المتغيرات a = InputBox("أدخل قيمة A:") b = InputBox("أدخل قيمة B:") " تقييم التعبير Select Case a = b Case True MsgBox " التعبير صحيح" Case False MsgBox "التعبيرات خاطئة" End Select End Sub

ملحوظة:يستخدم هذا الرمز للحصول على القيم من المستخدم.

مثال 2:بيان الحالة للتحقق من السلاسل النصية

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

Sub Select_Case_Example() "أدخل قيمة المتغيرات Fruit_name = InputBox("أدخل اسم الفاكهة:") " تقييم التعبير حدد حالة اسم الفاكهة حالة "Apple" MsgBox "لقد دخلت Apple" حالة "Mango" MsgBox "لقد دخلت Mango" الحالة "برتقالي" MsgBox "لقد دخلت البرتقالي" حالة أخرى MsgBox "لم أعرف هذه الفاكهة!" End Select End Sub

مثال 3:بيان حالة للتحقق من الأرقام

في المثال أدناه سوف نتحقق مما إذا كان الرقم الذي أدخله المستخدم أقل من أو أكبر من 5.

Sub Select_Case_Example() "أدخل قيمة المتغيرات Num = InputBox("أدخل أي رقم بين 1 إلى 10:") " تقييم التعبير Select Case Num Case Is< 5 MsgBox "Your Number is less than 5" Case Is = 5 MsgBox "Your Number is Equal to 5" Case Is >5 MsgBox "رقمك أكبر من 5" End اختر End Sub

ملحوظة:يمكنك استخدام يكونالكلمة الأساسية مع بيان الحالة لمقارنة القيم.

مثال 4:حدد بيان الحالة للتحقق من شروط متعددة داخل حالة واحدة.

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

Sub Select_Case_Example() "أدخل قيمة المتغيرات Num = InputBox("أدخل أي رقم بين 1 إلى 10:") " تقييم التعبير Select Case Num Case 2, 4, 6, 8, 10 MsgBox "رقمك زوجي." الحالة 1، 3، 5، 7، 9 MsgBox "رقمك فردي." حالة أخرى MsgBox "رقمك خارج النطاق." إنهاء حدد إنهاء الفرعية

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

مثال 5:بيان الحالة للتحقق من نطاق مستمر كشرط.

هنا سوف نقوم باختبار نطاق مستمر كشرط. سنطلب من المستخدم إدخال أي رقم بين 1-10، إذا كان الرقم بين 1 إلى 5 (بما في ذلك 1 و5) فإن "الحالة من 1 إلى 5" ستكون "صحيحة"، إذا كان الرقم الذي أدخله المستخدم هو بين 6 و10 (بما في ذلك كل من 6 و10) فإن "الحالة من 6 إلى 10" ستكون "صحيحة"، وإذا كانت كلتا الحالتين السابقتين "خطأ" فسيتم تنفيذ "الحالة الأخرى".

Sub Select_Case_Example() "أدخل قيمة المتغيرات Num = InputBox("أدخل أي رقم بين 1 إلى 10:") " تقييم التعبير حدد Case Num Case 1 إلى 5 MsgBox "رقمك بين 1 إلى 5" Case 6 to 10 MsgBox "رقمك بين 6 إلى 10" حالة أخرى MsgBox "رقمك خارج النطاق." إنهاء حدد إنهاء الفرعية

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

حول أنكيت كول

أنكيت هو مؤسس Excel Trick. إنه مهووس بالتكنولوجيا يحب الجلوس أمام صديقته ذات الرأس المربع (جهاز الكمبيوتر الخاص به) طوال اليوم. :د. لدى Ankit شغف قوي لتعلم Microsoft Excel. هدفه الوحيد هو تحويلكم إلى "مهووسين ببرنامج Excel".

لغة البرمجة البصرية الأساسية. فروع البرمجة

يتم تنظيم التفرع في Visual Basic باستخدام:

  • عبارة IF الشرطية؛
  • وظيفة IIF المضمنة؛
  • عامل الاختيار CASE.

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

المشغل الخطي لديه بناء الجملة التالي:

لو<условие>ثم<операторы!>

مشغل الكتلة لديه بناء الجملة التالي:

لو<условие>ثم
<блок операторов 1>
إنهاء إذا

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

يمكن أن تكون عبارة If متداخلة، أي أنها موجودة داخل كتل العبارة. لاختبار أكثر من شرط واحد وتنفيذ واحدة من عدة مجموعات من العبارات، استخدم عبارة شرطية موسعة للنموذج:

لو<условие 1>ثم
<блок операторов 1>
آخر<условие 2>ثم
<блок операторов 2>
آخر<условие n>ثم
<блок операторов n>
إنهاء إذا

لتحديد إحدى القيم اعتمادًا على استيفاء شرط ما أو فشله، استخدم الدالة الشرطية IIF، التي تحتوي على الصيغة التالية:

معهد التمويل الدولي(<условие>, <значение1>, <значение2>)

ترجع هذه الدالة القيمة 1 إذا كان الشرط صحيحًا والقيمة 2 إذا كان الشرط خطأ.

يمكنك استخدام تعبير منطقي كشرط يُرجع True أو

False، أو أي تعبير حسابي (القيمة الصفرية تعادل False، والقيمة غير الصفرية تعادل True).

حدد بيان الحالةيستخدم لاختبار شرط واحد وتنفيذ واحدة من عدة مجموعات من البيانات.

تنسيق سجل المشغل:

إختر حالة<проверяемое выражение>
قضية<список выражений 1>
<операторы 1>قضية<список выражений 2>
<операторы 2>قضية<список выражений 3>
<операторы 3>
حالة أخرى
<операторы группы Else>
إنهاء التحديد

يتم تقييم التعبير الذي يتم اختباره في بداية عبارة Select Case. يمكن لهذا التعبير إرجاع قيمة من أي نوع (منطقية، رقمية، سلسلة).

قائمة التعبيرات عبارة عن تعبير واحد أو أكثر مفصولة بحرف محدد قياسي (فاصلة منقوطة).

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

وقد تتخذ هذه القائمة التعبير عن النفقة أحد الأشكال التالية:

  • <выражение>- التحقق من تزامن تعبير معين مع أحد التعبيرات - عناصر القائمة؛
  • <выражение 1>الذي - التي<выражение 2>- التحقق مما إذا كان التعبير المحدد يقع ضمن النطاق المحدد؛
  • < Is <логический оператор> < выражение>- يتحقق من استيفاء الشرط المحدد لتعبير معين.

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

يستخدم الإجراء أعلاه عدة عبارات شرطية متداخلة. وينبغي القول أن هذا الإجراء لن يعمل إلا في برنامج Excel، لأن... يستخدم طريقة Application.InputBox (راجع وظائف التطبيق المضيف). تمنع هذه الطريقة المستخدم من إدخال أي شيء بخلاف الرقم أثناء تشغيل الوظيفة.

إذا قام المستخدم بإدخال رقم غير رقم، فإنه يتلقى رسالة حول هذا الموضوع.



إذا لم يدخل المستخدم أي شيء، فإنه يتلقى رسالة خطأ.




إذا استخدم المستخدم زر "إلغاء"، يتلقى الرسالة "لم يتم إدخال أي بيانات".


يوفر VBA نسخة مختصرة من البيان إذا.. إذن.. وإلا، وهو المعادل المكثف للبيانات المتداخلة إذا.. إذن.. وإلا، المستخدمة في القائمة. هذا النموذج القصير هو المشغل إذا.. إذن..إلا إذا



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


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

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

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


عامل القفز غير المشروط

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

يقوم عامل الانتقال غير المشروط دائمًا بتغيير الترتيب الذي يتم به تنفيذ البيانات في الإجراء أو الوظيفة. في هذه الحالة، لا يتم التحقق من أي شروط.


بناء الجملة:

انتقل إلى الخط


خط- أي تسمية أو رقم سطر صالح في نفس الإجراء أو الوظيفة التي تحتوي على عبارة GoTo.

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

تعمل بنية Select Case على تعبير واحد ليتم اختباره، والذي يتم تقييمه مرة واحدة عند الدخول إلى البنية. ثم يقوم VBA بمقارنة النتيجة الناتجة بالقيم المحددة في عبارات الحالة الخاصة بالبنية. إذا تم العثور على تطابق، فسيتم تنفيذ مجموعة العبارات المرتبطة ببيان الحالة:

حدد تعبير الحالة المراد اختباره

[operator_blockn]]

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

دعونا نلقي نظرة على مثال لحساب الوظيفة

المثال الفرعي 2()

كونست pi2 = 1.57

Let x = CSng(InputBox("أدخل x"، "Input"، 0))

MsgBox "بيانات المصدر غير صالحة!"

استدعاء ("D1"، z)

لاحظ أن بناء تحديد الحالة يقوم بتقييم التعبير مرة واحدة فقط عند الإدخال، في حين أن بناء If. . . ثم. . . يقوم Else بتقييم تعبير مختلف لكل عبارة Elself. بناء إذا. . . ثم. . . يمكن استبدال Else ببناء Select Case فقط إذا قامت عبارة If وكل عبارة Elself بتقييم نفس التعبير.

مشغلي الحلقة. حلقات متداخلة

1. مشغلي الحلقة

2. الحلقات المتداخلة

1. مشغلي الحلقة.

تتيح لك الحلقات تنفيذ سطر واحد أو أكثر من التعليمات البرمجية عدة مرات. يدعم VBA الحلقات التالية:

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

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

العاملين

معلمات العداد والبداية والنهاية والزيادة رقمية.

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

ينفذ VBA حلقة For بالتسلسل التالي:

1. يضبط قيمة عداد متغير الحلقة للبدء.

2. يقارن قيمة عداد متغير الحلقة وقيمة معلمة النهاية. إذا كان العداد أكبر، يقوم VBA بإنهاء الحلقة. (إذا كانت الزيادة سالبة، فسيتوقف VBA عن تنفيذ الحلقة إذا كانت قيمة عداد متغير الحلقة أقل من قيمة النهاية.)

3. ينفذ العبارات الموجودة في نص حلقة العبارات.

4. زيادة قيمة عداد متغير الحلقة بمقدار 1 أو بقيمة معلمة الزيادة، إذا تم تحديدها.

5. كرر الخطوات من 2 إلى 4.

خذ بعين الاعتبار مثالاً: احسب قيمة الدالة f(t)

بالنسبة لـ a، b، n، إذا تغير t من a إلى b مع الخطوة Dt=(b-a)/(n-1).

المثال الفرعي3()

خافت f () كمفردة

خافت a كمفرد، b كمفرد، t كمفرد، dt كمفرد

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

استدعاء القراءة ("a1"، a) : استدعاء القراءة ("b1"، b) : استدعاء القراءة ("c1"، n)

رديم و (1 إلى ن - 1)

د = (ب - أ) / (ن - 1) : ر = أ

استدعاء("a2"، "i") : استدعاء("b2"، "t") : استدعاء("c2"، "f(t)")

لأني = 1 إلى ن - 1

إذا ر<= -1 Then

ElseIf t > 1 ثم

استدعاء ("a" & (2 + i)، i) : استدعاء ("b" & (2 + i)، t) : استدعاء ("c" & (2 + i)، f(i))

لكل بناء. . . التالي

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

بناء جملة بناء لكل حلقة. . . التالي هو:

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

العاملين

ضع القيود التالية في الاعتبار عند استخدام حلقة For Each. . . التالي:

بالنسبة للمجموعات، يمكن أن تكون معلمة العنصر فقط متغيرًا من النوع المتغير، أو متغيرًا عامًا من كائن النوع، أو كائنًا مدرجًا في متصفح الكائنات

بالنسبة للمصفوفات، يمكن أن تكون معلمة العنصر متغيرًا متغيرًا فقط

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

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

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

في البناء التالي، افعل. . . يتم تنفيذ عبارات التكرار طالما كانت قيمة الشرط صحيحة:

افعل بينما الشرط

العاملين

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

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

لنأخذ مثالاً: احسب مجموع المتسلسلة

بدقة معينة.

المثال الفرعي4()

Dim e كمفردة، x كمفردة، s كمفردة

خافت m كمفرد، p كمفرد، i كمفرد

استدعاء القراءة ("a1"، x): استدعاء القراءة ("b1"، e)

ق = 0: ط = 1: م = 1: ع = -1

استدعاء("a2"، "i") : استدعاء("b2"، "m") : استدعاء("c2"، "s")

افعل بينما القيمة المطلقة (م) >= ه

استدعاء("a" & (2 + i), i): استدعاء("b" & (2 + i), Abs(m)) : استدعاء("c" & (2 + i), s)

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

العاملين

بينما الشرط

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

لا يتم تنفيذ الحلقة على الإطلاق أو يتم تنفيذها عدة مرات:

افعل حتى الشرط

مشغلي الحلقة

يتم تنفيذ الحلقة مرة واحدة على الأقل:

العاملين