فبا المنطقية Operators: AND، OR، NOT، إذا لم يكن في Excel VBA

⚡ ملخص ذكي

فبا المنطقية Operaتجمع هذه العملية عدة شروط في نتيجة واحدة صحيحة أو خاطئة. تشرح هذه الصفحة عوامل AND وOR وNOT مع أمثلة عملية لأزرار الأوامر، وجدول الحقيقة الكامل، وعوامل XOR وEqv وImp الأقل شهرة.

  • 🔗 الغرض: تقوم عوامل التشغيل المنطقية بتقييم أكثر من شرط واحد داخل عبارة If واحدة.
  • ✅ لأي لبس Operaتور: تُرجع القيمة "صحيح" فقط عندما تكون جميع الشروط التي تربطها صحيحة.
  • ➕ OR Operaتور: تُرجع القيمة "صحيح" عندما يكون أحد الشروط على الأقل صحيحًا.
  • 🔄 لا Operaتور: يعكس النتيجة، فيحول القيمة True إلى False والقيمة False إلى True.
  • 📊 جدول الحقيقة: تُظهر شبكة مرجعية واحدة نتيجة كل عامل لكل تركيبة إدخال.
  • 🧮 إكسترا Operaتورس: تتعامل الدوال Xor و Eqv و Imp مع الشروط الحصرية والمكافئة والضمنية.
  • ⚠️ ممنوع حدوث ماس كهربائي: يقوم VBA بتقييم كل جزء من الشرط، لذلك يجب أن يكون اختبار الحماية موجودًا في شرط If متداخل.

فبا المنطقية Operaالكلمات المفتاحية: AND، OR، NOT في Excel VBA

إكسل VBA المنطقي Operaالاختصاصات

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

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

يتم سرد العوامل المنطقية الرئيسية في Excel VBA AND وOR وNOT في الجدول أدناه:

S / N المُشغل الوصف مثال الناتج
1 لأي لبس و: يستخدم للجمع بين أكثر من شرط. إذا كانت جميع الشروط صحيحة، ويتم تقييمها على أنها صحيحة. إذا كان أي من الشرط خطأ، ويتم تقييمه على أنه خطأ إذا كان (1 = 1) و (0 = 1) فإن زائف
2 OR أو: يستخدم للجمع بين أكثر من شرط. إذا تم تقييم أي من الشروط على أنه صحيح، فسيتم إرجاع OR صحيحًا. إذا كانت كلها كاذبة، أو ترجع كاذبة إذا كان (1 = 1) أو (5 = 0) صحيح
3 لا NOT: هذه تعمل كدالة عكسية. إذا كان الشرط صحيحا يعود كاذبا، وإذا كان الشرط خاطئا يعود صحيحا. إذا لم يكن (0 = 0) زائف

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

جدول الحقيقة للمنطق في VBA Operaالاختصاصات

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

الشرط أ الشرط ب أ و ب ا او ب ليس أ
صواب صواب صواب صواب خطأ
صواب خطأ خطأ صواب خطأ
خطأ صواب خطأ صواب صواب
خطأ خطأ خطأ خطأ صواب

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

فبا المنطقية Operaمثال على مصدر التورات Code

من أجل التبسيط، سنقوم بمقارنة الأرقام المشفرة.

أضف أزرار ActiveX إلى الورقة من "خيار الإدراج".

اضبط الخصائص كما هو موضح في الصورة أدناه

فبا المنطقية Operaالاختصاصات
فبا المنطقية Operaالاختصاصات

يوضح الجدول التالي الخصائص التي تحتاج إلى تغييرها والقيم التي تحتاج إلى تحديثها أيضًا.

S / N السيطرة الممتلكات بعد التخفيض
1 زر الأوامر1 الاسم btnAND
شرح لأي لبس Operator (1 = 1) And (0 = 0)
2 زر الأوامر2 الاسم btnOR
شرح OR Operaتور (1 = 1) أو (5 = 0)
3 زر الأوامر3 الاسم ليس
شرح لا Operaليس (0 = 0)

أضف الكود التالي إلى btnAND_Click

Private Sub btnAND_Click()
If (1 = 1) And (0 = 0) Then
    MsgBox "AND evaluated to TRUE", vbOKOnly, "AND operator"
Else
    MsgBox "AND evaluated to FALSE", vbOKOnly, "AND operator"
End If
End Sub

فبا إذا و Operaتور

  • "إذا (1 = 1) و(0 = 0) إذن" تستخدم عبارة if عامل AND المنطقي لدمج شرطين (1 = 1) و(0 = 0). إذا كان كلا الشرطين صحيحين، فسيتم تنفيذ الكود الموجود أعلى الكلمة الأساسية "Else". إذا لم يكن كلا الشرطين صحيحين، فسيتم تنفيذ الكود الموجود أسفل الكلمة الأساسية "Else".

كلا الشرطين صحيحان هنا، لذا فإن النقر على الزر يُظهر "و تم تقييمها على أنها صحيحة".

أضف الكود التالي إلى btnOR_Click

Private Sub btnOR_Click()
If (1 = 1) Or (5 = 0) Then
    MsgBox "OR evaluated to TRUE", vbOKOnly, "OR operator"
Else
    MsgBox "OR evaluated to FALSE", vbOKOnly, "OR operator"
End If
End Sub

فبا إذا أو Operaتور

  • "إذا (1 = 1) أو (5 = 0) إذن" تستخدم عبارة if عامل الربط المنطقي OR لدمج شرطين (1 = 1) أو (5 = 0). إذا كان أي من الشرطين صحيحًا، يتم تنفيذ الكود أعلاه. أما إذا كان كلا الشرطين خاطئًا، فيتم تنفيذ الكود أدناه.

الشرط الأول صحيح والثاني خاطئ، لذلك لا تزال عملية OR تُرجع القيمة true وتقرأ الرسالة "تم تقييم OR إلى TRUE".

أضف الكود التالي إلى btnNOT_Click

Private Sub btnNOT_Click()
If Not (0 = 0) Then
    MsgBox "NOT evaluated to TRUE", vbOKOnly, "NOT operator"
Else
    MsgBox "NOT evaluated to FALSE", vbOKOnly, "NOT operator"
End If
End Sub

VBA إذا لم يكن كذلك Operaتور

  • "إذا لم يكن (0 = 0) إذن" تستخدم دالة If Not في VBA عامل النفي المنطقي NOT لنفي نتيجة شرط جملة if. الشرط الداخلي (0 = 0) صحيح، لذا يحوله Not إلى خطأ، ويتم تنفيذ الكود أسفل الكلمة المفتاحية 'Else'. لو كان الشرط الداخلي خاطئًا، لكان Not قد جعله صحيحًا، ولتم تنفيذ الكود أعلى 'Else' بدلًا من ذلك.

تختبر هذه الأزرار الثلاثة قيمة ثابتة. تُقرأ الشروط الحقيقية من ورقة العمل وتجمع بين مجموعتي المعاملات.

كيفية الجمع بين المنطق والمقارنة Operaالاختصاصات

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

Sub ApproveOrder()
    Dim QtyOnHand As Long
    Dim QtyOrdered As Long
    Dim OnHold As Boolean

    QtyOnHand = Sheet1.Range("B2").Value
    QtyOrdered = Sheet1.Range("B3").Value
    OnHold = Sheet1.Range("B4").Value

    ' All three parts must hold for the order to pass
    If (QtyOrdered > 0) And (QtyOnHand >= QtyOrdered) And Not OnHold Then
        Sheet1.Range("B5").Value = "Approved"
    Else
        Sheet1.Range("B5").Value = "On hold"
    End If
End Sub

ثلاث قواعد تحافظ على قابلية قراءة الشرط المركب وصحته.

  • ضع كل مقارنة بين قوسين: يقوم VBA بتقييم عوامل المقارنة قبل العوامل المنطقية، لكن الأقواس تجعل المجموعةping من الواضح أن ذلك يمنع حدوث خطأ عندما تتفاقم الحالة لاحقًا.
  • انتبه إلى أسبقية "و" على "أو": أ أو ب و ج يُقرأ على النحو التالي أ أو (ب و ج)إذا كنت تقصد (أ أو ب) و ج، الأقواس إلزامية.
  • لا ينطبق على قيمة منطقية، ولا على رقم: غير معلق يقرأ بشكل طبيعي. تجنب ليس 5، لأن دالة النفي (Not) تقوم بعملية منطقية على الأرقام وتعيد -6 بدلاً من خطأ (False).

⚠️ تحذير: لا يتسبب VBA في حدوث اختصار. إذا كان (ws Is Nothing) أو (ws.Name = “Data”)، يستمر الجزء الثاني في العمل حتى عندما يكون الجزء الأول صحيحًا، مما يؤدي إلى ظهور خطأ وقت التشغيل 91. قسّم هذه الحواجز إلى عبارات If متداخلة.

Xor و Eqv و Imp Operaتورس في VBA

تغطي عبارات AND و OR و NOT تقريبًا كل حالة يومية، لكن VBA توفر ثلاثة عوامل منطقية أخرى تعبر أحيانًا عن قاعدة بشكل أكثر وضوحًا من مجموعة من عبارات If.

المُشغل تُرجع القيمة True عندما مثال الناتج
XOR يتحقق شرط واحد فقط من الشرطين، وليس كلاهما معًا. (1 = 1) Xor (5 = 0) صواب
المعادلة كلا الشرطين لهما نفس القيمة، إما كلاهما صحيح أو كلاهما خاطئ (1 = 1) معادلة (2 = 2) صواب
عفريت الشرط الأول يستلزم الشرط الثاني؛ فقط "صحيح يستلزم خطأ" يكون خاطئًا (1 = 1) Imp (5 = 0) خطأ

تُعدّ XOR الأكثر عمليةً من بين الثلاثة. فهي تُناسب قاعدةً مثل "ينطبق الخصم على الموظف أو عضو برنامج الولاء، ولكن لا ينطبق على من يجمع بينهما". أما Eqv و Imp فتظهران غالبًا في البرامج القديمة وفي تمارين المنطق، لذا فإنّ فهمهما أهم من كتابتهما.

قم بتنزيل Excel الذي يحتوي على الكود أعلاه

الأسئلة الشائعة

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

عند تطبيقها على رقم، تُجري دالة النفي (Not) عملية عكس بتية بدلاً من عملية منطقية. استخدمها فقط عند المقارنة أو عند تطبيقها على متغير منطقي، مثل Not (Qty > 0)، بحيث تكون النتيجة إما صحيحة أو خاطئة.

المنطق متطابق، لكن الصيغة مختلفة. في صيغة ورقة العمل، تُستدعى هذه الصيغ كدوال، مثل AND(A1>0, B1>0). أما في VBA، فتُوضع بين الشروط، كما في: If A1 > 0 And B1 > 0 Then.

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

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

تلخيص هذه التدوينة بـ: