VBA IIF | كيفية استخدام وظيفة VBA IIF في Excel؟ (مع أمثلة)

برنامج Excel VBA IIF

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

ماذا تفعل حالة IIF في VBA؟

هذا مشابه جدًا لحالة IF الخاصة بنا ولكنه مختلف قليلاً في طبيعته. يختبر شرط "VBA IIF" التعبير المقدم أو الاختبار المنطقي ويعيد إما TRUE أو FALSE كنتيجة.

بناء جملة VBA IIF

ألقِ نظرة على صيغة دالة IIF.

  • التعبير: هذا ليس سوى الاختبار المنطقي الذي نرغب في إجرائه.
  • جزء Ture: إذا كان الاختبار المنطقي هو TRUE ، فماذا يجب أن تكون نتيجة الجزء TRUE.
  • الجزء الخاطئ: إذا كان الاختبار المنطقي FALSE فماذا يجب أن تكون نتيجة الجزء FALSE.

يمكننا إدخال النتائج الخاصة بنا باستخدام أجزاء TRUE & FALSE. على الرغم من أن الحجج تبدو مشابهة لتلك الخاصة بشرط IF ، إلا أن هذا سيكون مختلفًا قليلاً. سنرى ذلك في أمثلة وظيفة Excel VBA IIF.

أحد الاختلافات الرئيسية بين "IF" العادي و "IIF" هو أنه يمكننا تقليل الكود إلى سطر واحد مع IIF حيث يتطلب شرط IF ما لا يقل عن 5 أسطر للوصول إلى نفس النتيجة.

مثال على وظيفة VBA IIF

فيما يلي أمثلة على وظيفة VBA IIF في Excel.

يمكنك تنزيل قالب Excel VBA IIF من هنا - قالب Excel VBA IIF

المثال رقم 1 - VBA IIF

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

الخطوة 1: ابدأ الماكرو.

الخطوة 2: حدد المتغير على أنه String في VBA.

رمز:

 مثال IIF_Example () خافت نهائي ناتج عن سلسلة نهاية فرعية 

الخطوة 3: حدد متغيرين آخرين مثل Long في VBA.

رمز:

 المثال الفرعي IIF_Example () خافت نهائي ناتج عن رقم خافت للسلسلة 1 كرقم خافت طويل 2 كطرف ثانوي 

الخطوة 4: الآن بالنسبة للمتغير "Number1" ، خصص قيمة 105 وللمتغير "Number2" خصص القيمة 100.

رمز:

 IIF_Example () خافت نهائي نتيجة كرقم خافت للسلسلة 1 كرقم خاف طويل 2 كرقم طويل 1 = 105 رقم 2 = 100 نهاية فرعي 

الخطوة 5: الآن بالنسبة إلى المتغير المحدد الأول "FinalResult" ، سنقوم بتعيين نتيجة دالة IIF. لذا افتح IIF للمتغير.

الخطوة 6: أدخل التعبير كـ Number1> Number2.

الخطوة 7: الآن إذا كان التعبير صحيحًا فماذا يجب أن تكون النتيجة. سأقوم بتعيين النتيجة على أنها "الرقم 1 أكبر من الرقم 2".

الخطوة 8: الآن إذا كان التعبير FALSE فماذا يجب أن تكون النتيجة. سأقوم بتعيين النتيجة على أنها "الرقم 1 أقل من الرقم 2".

الآن ستكون القيمة المتغيرة إما واحدة مما يلي.

إذا كان صحيحًا: "الرقم 1 أكبر من الرقم 2"

إذا كان خطأ: "الرقم 1 أقل من الرقم 2"

الخطوة 9: دعنا نظهر النتيجة في مربع رسالة في VBA.

رمز:

 Sub IIF_Example () Dim FinalResult على هيئة رقم خاف للسلسلة 1 كرقم بعد طويل 2 كرقم طويل 1 = 105 Number2 = 100 FinalResult = IIf (Number1> Number2 ، "الرقم 1 أكبر من الرقم 2" ، "الرقم 1 أقل من الرقم 2") MsgBox FinalResult End Sub 

الآن دعنا نشغل الكود ونرى النتيجة.

نظرًا لأن القيمة رقم 1 هي 105 وهي أكبر من قيمة الرقم 2 التي تبلغ 100 ، فقد حصلنا على النتيجة "الرقم 1 أكبر من الرقم 2". نظرًا لأن Expression تساوي TRUE ، فقد أرجع شرط IIF هذه النتيجة.

المثال رقم 2 - IF vs IIF

يجب أن تتساءل ما هو الفرق بين IF & IIF. نعم ، هناك اختلاف في الترميز. على سبيل المثال ، انظر إلى كود شرط IF.

رمز:

 Sub IIF_Example () Dim FinalResult كـ String Dim Number1 as long Dim Number2 as long Number1 = 105 Number2 = 100 إذا كان Number1> Number2 ثم MsgBox "Number 1 أكبر من رقم 2" Else MsgBox "الرقم 1 أقل من رقم 2" End If End Sub 

باستخدام IF ، قمنا أولاً بتطبيق اختبار منطقي.

 إذا كان Number1> Number2 ثم 

ثم إذا كان الاختبار المنطقي صحيحًا ، فقد طبقنا النتيجة.

MsgBox "الرقم 1 أكبر من الرقم 2"

ثم إذا كان الاختبار المنطقي خاطئًا ، فقد طبقنا النتائج المختلفة.

MsgBox "الرقم 1 أقل من الرقم 2"

تعيد كلتا الوظيفتين نفس النتيجة ولكن مع IIF يمكننا الترميز في سطر واحد فقط ، حيث تتطلب عبارة IF سطورًا متعددة.

المثال رقم 3 - VBA Nested IIF Condition

مثل الطريقة التي نستخدم بها IF المتداخلة لاختبار شروط متعددة بالمثل ، يمكننا استخدام IIF أيضًا. ألق نظرة على الكود أدناه.

رمز:

 Sub IIF_Example2 () Dim FinalResult مثل String Dim Marks As Long Marks = 98 FinalResult = IIf (Marks> 90، "Dist"، IIf (Marks> 80، "First"، IIf (Marks> 70، "Second"، IIf (Marks > 60 ، "ثالث" ، "فشل")))) MsgBox FinalResult End Sub 

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


$config[zx-auto] not found$config[zx-overlay] not found