كيفية استخدام عبارة select case في vba؟
النقاط الرئيسية
- باستخدام SELECT CASE، يمكنك اختبار شروط متعددة، خاصة عند العمل على أكثر من شرطين.
- الكود الذي تكتبه باستخدام SELECT CASE أكثر تنظيمًا من الكود الشرطي القياسي.
- من الأسهل تغييره عندما تحتاج إلى ضبط واحدة أو أكثر من القيم في الكود.
ما هو VBA Select Case
VBA SELECT CASE عبارة عن بيان لاختبار شروط متعددة. في هذا البيان، يمكنك تحديد شرط واحد، ثم تحديد بعض التعليمات البرمجية للتنفيذ إذا كان هذا الشرط صحيحًا، ثم تحديد شرط ثانٍ وبعض التعليمات البرمجية للتنفيذ إذا كان هذا الشرط صحيحًا. بهذه الطريقة يمكنك تحديد شروط متعددة وعبارات متعددة.
بناء الجملة لاختيار الحالة
يوجد أدناه بناء الجملة الذي يجب عليك اتباعه لكتابة بيان حالة محدد.
Select Case Test Expression Case (Condition to Test) Statement1 [Line of Code to Run if CASE 1 is TRUE] Case (Condition to Test) Statement1 [Line of Code to Run if CASE 2 is TRUE] Case Else Statement [Line of Code to Run if no CASE is TRUE] End Select
في حالة SELECT، يبدأ بناء الجملة بالكلمة الأساسية “Select” وينتهي بـ “End Select”. ولكي نفهم تركيبه، علينا أن نقسمه إلى أربعة أجزاء:
- في الجزء الأول ، تحتاج إلى تحديد “تعبير الاختبار” الذي يتم اختبار جميع الشروط عليه.
- بعد ذلك، في الجزء الثاني ، عليك تحديد الحالة المراد اختبارها (أي الحالة المراد اختبارها).
- الآن في الجزء الثالث عليك أن تكتب حالة أخرى حيث عليك اختبار ما إذا كان الشرط في الجزء الثاني غير صحيح.
- في النهاية، في الجزء الرابع ، يجب عليك تحديد النتيجة التي يجب أن تحدث عندما لا تكون كلتا الحالتين أعلاه صحيحتين.
مثال بسيط لفهم بيان الحالة المحدد
إن بناء جملة SELECT CASE لا يحتاج إلى شرح ويسهل اتباعه إلى حد ما عند كتابة التعليمات البرمجية. لكن دعونا نأخذ مثالاً ونفهمه بالكامل. يوجد أدناه رمز بسيط لاختبار قيمة الخلية A1.
Sub SelectCaseExample1() Select Case Range("A1").Value Case "Yes" MsgBox "It's a Yes." Case "No" MsgBox "It's a No" Case Else MsgBox "Can't Say" End Select End Sub
الآن دعونا نفهم هذا الكود مع كل سطر:
- أولاً، لديك الكلمة الأساسية SELECT CASE والخلية A1 لاستخدامها كتعبير لاختبار الحالة.
- ثانيًا ، لديك الكلمة الأساسية CASE والشرط (“YES”) للتحقق من الخلية A1 والرمز لعرض مربع رسالة بالرسالة “It’s a Yes” إذا كان الشرط المذكور في الحالة 1 صحيحًا.
- ثالثًا، لديك مرة أخرى حالة الكلمة الرئيسية والشرط (“لا”) للتحقق من الخلية A1 والرمز لعرض مربع رسالة بالرسالة “إنها لا” إذا كان الشرط المذكور في الحالة الثانية صحيحًا.
- رابعًا ، لديك الكلمة الأساسية CASE ELSE وسطرًا من التعليمات البرمجية لعرض مربع رسالة يحتوي على رسالة “Can’t Say” إذا لم تكن أي من الحالتين صحيحة.
- خامسًا ، لديك الكلمة الأساسية END SELECT لإنهاء عبارة SELECT CASE.
ذات صلة: صندوق رسائل VBA
نقاط مهمة
- يمكنه اختبار شروط متعددة وتنفيذ سطر من التعليمات البرمجية بناءً على النتيجة.
- يمكنك استخدام عوامل المقارنة (=، >، <، <>، >=، <=) عند اختبار شرط باستخدام الكلمة الأساسية Is.
- يمكنك استخدام الفاصلة لاختبار شروط متعددة في نفس الحالة.
- يمكنك أيضًا استخدام نطاق من الأرقام عند اختبار حالة ما في حالة واحدة.
- عند استيفاء شرط ما، يتوقف VBA لاختبار بقية حالات البيان.
- يمكنك أيضًا إضافة قسم حالة آخر في النهاية لتنفيذ سطر من التعليمات البرمجية عند عدم استيفاء أي من الشروط.
- يمكنك تخطي استخدام عبارة CASE END.
مزيد من الأمثلة لاستخدام تحديد الحالة
لقد حان الوقت لاستخدام SELECT CASE بطرق مختلفة، وإليك بعض الأمثلة المفيدة والأساسية التي يمكنك تعلمها.
100 أمثلة على وحدات ماكرو Excel
1. حدد الحالة بالأرقام
عند كتابة تعليمات VBA البرمجية لعبارة SELECT CASE، يمكنك استخدام عوامل التشغيل لمقارنة القيم. الآن في الكود أدناه لديك عوامل التشغيل > و< و= لاختبار الشروط.
Sub SelectCaseExample1() Select Case Range("A1").Value Case Is >= 45 MsgBox "Pass" Case Is < 45 MsgBox "Fail" End Select End Sub
- الحالة الأولى من هذا البيان تتحقق مما إذا كانت قيمة الخلية A1 أكبر من أو تساوي 45 أم لا وتقوم بإرجاع مربع رسالة بالرسالة “تمرير”.
- والحالة الثانية من العبارة تتحقق مما إذا كانت قيمة الخلية A1 أقل من 45 وترجع مربع رسالة بالرسالة “فشل”.
2. حدد الحالة بمجموعة من الأرقام
يمكنك أيضًا استخدام مجموعة من الأرقام لاختبار الحالة. في الكود أدناه لديك شرط مع مجموعة من الأرقام في كل حالة لاختبارها.
Sub SelectCaseExample2() Select Case Range(“A1”).Value Case 45 To 100 MsgBox “Pass” Case 0 To 44 MsgBox “Fail” Case Else MsgBox “Out of Range” End Select End Sub
- الحالة الأولى من العبارة تتحقق من الرقم الموجود في الخلية A1 باستخدام نطاق الأرقام من 45 إلى 100 وترجع “تمرير” إذا كانت القيمة تقع تحت هذا النطاق.
- تحتوي العبارة الثانية على نطاق من 0 إلى 44 لاختبارها باستخدام القيمة الموجودة في الخلية A1 وترجع “فشل” إذا كانت القيمة تقع تحت هذا النطاق.
- العبارة الثالثة هي الحالة وإلا تعرض مربع رسالة بالرسالة “خارج النطاق” إذا كانت الحالتين الأولى والثانية خاطئة.
3. استخدام عامل القولون
عند كتابة التعليمات البرمجية لحالة SELECT، يمكنك استخدام عوامل النقطتين لكتابة الحالة بأكملها في سطر واحد.
في الكود أدناه، يبدأ السطر بالحالة، ثم الشرط المراد اختباره، ثم نقطتين، ثم العبارة المطلوب تنفيذها في هذه الحالة صحيحة.
Sub SelectCaseExample3() Select Case Range(“A1”).Value Case 45 To 100: MsgBox “Pass” Case 0 To 44: MsgBox “Fail” Case Else: MsgBox “Out of Range” End Select End Sub
4. استخدم تحديد الحالة بشروط متعددة
تمامًا مثل تعيين نطاق لحالة ما، يمكنك أيضًا تحديد قيم متعددة لاختبار الحالة. في الكود أدناه، تحتوي كل حالة على ثلاثة أرقام للاختبار.
Sub SelectCaseExample() Select Case Range("A1").Value Case 1, 3, 5 MsgBox "Yes" Case 2, 4, 6 MsgBox "No" Case Else MsgBox "Out of range" End Select End Sub
- ستقوم الحالة الأولى من هذا الرمز باختبار قيمة الخلية إذا كانت 1 أو 3 أو 5 وإرجاع “نعم” في مربع رسالة.
- والحالة الثانية من هذا الكود ستختبر قيمة الخلية A1 إذا كانت 2 أو 4 أو 6.
5. استخدام حالة التحديد في وظيفة مخصصة
يمكنك أيضًا استخدام SELECT CASE عند كتابة التعليمات البرمجيةلوظيفة VBA .
Function udfGrade(student_marks As Integer) Dim myGrade As String Select Case student_marks Case Is < 40: myGrade = “Bad” Case 41 To 50: myGrade = “Average” Case 51 To 60: myGrade = “Good” Case 61 To 80: myGrade = “Very Good” Case 81 To 100: myGrade = “Excellent” End Select udfGrade = myGrade End Function
في الوظيفة المذكورة أعلاه، هناك خمسة مربعات للتحقق من درجات الطلاب في الخلية. تستخدم جميع الحالات الخمس نطاقًا من الأرقام وترجع القيمة المحددة في البيان.
6. استخدام تحديد الحالة من الشروط المتداخلة
يمكنك أيضًا إنشاء بيان شرط متداخل. ما أحاول قوله هو أنه يمكنك كتابة التعليمات البرمجية لاختبار شروط متعددة مع الحالة المحددة.
تخيل أنك تريد كتابة تعليمات برمجية يمكنها اختبار الظروف بناءً على قيم خليتين مختلفتين.
Sub SelectCaseStatement() Select Case Range("A2") Case "Boy" Select Case Range("B2") Case "Commerce": MsgBox "Boy (Commerce)" Case "Science": MsgBox "Boy (Science)" End Select Case "Girl" Select Case Range("B2") Case "Commerce": MsgBox "Girl (Commerce)" Case "Science": MsgBox "Girl (Science)" End Select End Select End Sub
في الكود أعلاه لديك ثلاث عبارات تحديد حالة. هناك عبارة رئيسية تتحقق من قيمة الخلية A2 إذا كانت “صبي” أو “فتاة”.
وبعد ذلك، بناءً على النتيجة، يتم تنفيذ تعليماتين إضافيتين والتحقق من قيمة الخلية B2 إذا كانت التجارة أو العلوم.
اختر الحالة مقابل عبارة “إذا كان الأمر كذلك”.
- عندما تريد اختبار شروط متعددة، فمن السهل كتابة التعليمات البرمجية باستخدام SELECT CASE بدلاً من IF-THEN.
- حتى أنه من السهل التعديل وإجراء التغييرات في عبارة SELECT CASE مقارنةً بـ IF-THEN.
الدروس ذات الصلة
- حلقات VBA (المبتدئ إلى المتقدم)
- Excel VBA Do while Loop و (Do Loop while) – دليل
- قم بالمراجعة عبر كافة الأوراق باستخدام VBA في Excel