مقارنة VBA Operaتورس: لا يساوي، Less من أو يساوي

⚡ ملخص ذكي

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

  • 🇧🇷 الغرض: تقوم عوامل المقارنة بالتحقق من صحة البيانات عن طريق اختبار شرط يتم تقييمه إلى صحيح أو خطأ.
  • 🔢 ستة Operaتورس: يساوي، أصغر من، أكبر من، لا يساوي، أصغر من أو يساوي، وأكبر من أو يساوي.
  • 🔁 الدور المزدوج: تُستخدم علامة المساواة للمقارنة داخل شرط معين، وتُسند قيمة خارجه.
  • 🧪 شرط الشرط: يتم وضع كل مقارنة داخل If أو ElseIf أو Do While للتحكم في الكود الذي يتم تشغيله.
  • 🔤 النص والتواريخ: تتم مقارنة السلاسل حرفًا بحرف، بينما تتم مقارنة التواريخ كأرقام تسلسلية.
  • ⚠️ فخ دقيق: أنظمة Double قد تفشل القيم التي تبدو متطابقة في اختبار المساواة، لذا قارن الفرق المقرب.

مقارنة VBA Operaالاختصاصات

مقارنة VBA Operaالاختصاصات

هذه عوامل تُستخدم لمقارنة القيم. وتشمل عوامل المقارنة: يساوي، أصغر من، أكبر من، ولا يساوي.

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

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

يسرد الجدول التالي عوامل المقارنة المحددة في VBA.

المُشغل الوصف
= متساوي: يتحقق مما إذا كانت قيمتان متساويتين. كما يستخدم أيضًا كعامل تعيين
< Less من: يتحقق مما إذا كانت القيمة الموجودة على اليسار أصغر من القيمة الموجودة على اليمين
> أكبر من: يتحقق مما إذا كانت القيمة الموجودة على اليسار أكبر من القيمة الموجودة على اليمين
<> لا يساوي: يتحقق مما إذا كانت قيمتان مختلفتين عن بعضهما البعض
<= Less أكبر من أو يساوي: يتحقق مما إذا كانت القيمة الموجودة على اليسار أصغر من أو تساوي القيمة الموجودة على اليمين
>= أكبر من أو يساوي: يتحقق مما إذا كانت القيمة الموجودة على اليسار أكبر من أو تساوي القيمة الموجودة على اليمين

إن رؤية كل عامل مطبق على متغيرين يجعل من السهل التنبؤ بالنتيجة المُعادة.

مقارنة VBA Operaتورس مع المثال

يوضح الجدول التالي مقارنة Excel VBA Operaتورس مع الأمثلة والإخراج.

S / N المُشغل مثال الناتج
1 = إذا س = ض ثم يُرجع صحيحًا إذا كانا متساويين، وإلا يُرجع خطأ
2 < إذا س <ض ثم يُرجع صحيحًا إذا كانت x أقل من z، وإلا فإنه يُرجع خطأ
3 > إذا س > ض ثم يُرجع صحيحًا إذا كانت x أكبر من z، وإلا فإنه يُرجع خطأ
4 <> إذا س <> ض ثم يُرجع صحيحًا إذا لم يكنا متساويين، وإلا يُرجع خطأ
5 <= إذا س <= ض ثم يتم إرجاع صحيح إذا كانت x أقل من أو تساوي z، وإلا فإنها تُرجع خطأ
6 >= إذا كان x >= z فإن يتم إرجاع صحيح إذا كانت x أكبر من أو تساوي z، وإلا فإنها تُرجع خطأ

مثال كود المصدر

المقارنة المتساوية Operaتور

If 2 = 1 Then
    MsgBox "True", vbOKOnly, "Equal Operator"
Else
    MsgBox "False", vbOKOnly, "Equal Operator"
End If

هنا،

  • "إذا كان 2 = 1 إذن... وإلا... انتهى إذا" يستخدم عبارة if لتقييم الشرط "2 = 1"
  • "رسالةBox... " هي وظيفة مدمجة تعرض مربع رسالة.
    • سيتم عرض المعلمة الأولى "True" أو "False" في مربع الرسالة. في مثالنا، 2 لا يساوي 1، وبالتالي، سيتم عرض "false" في مربع الرسالة.
    • المعلمة الثانية “vbOKOnly” هي الزر الذي يظهر في مربع الرسالة
    • المعلمة الثالثة "متساوية". Opera"tor" هو عنوان صندوق الرسالة.

يؤدي تنفيذ الكود أعلاه إلى النتائج التالية

ايكوال Operaتور

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

كيفية استخدام المقارنة Operators في جملة if

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

Sub GradeScore()
    Dim Score As Long

    Score = Sheet1.Range("A1").Value

    If Score >= 90 Then
        Sheet1.Range("B1").Value = "Distinction"
    ElseIf Score >= 50 Then
        Sheet1.Range("B1").Value = "Pass"
    ElseIf Score < 0 Then
        MsgBox "A score cannot be negative", vbCritical, "Invalid Entry"
    Else
        Sheet1.Range("B1").Value = "Fail"
    End If
End Sub

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

  • الترتيب مهم: يتوقف VBA عند أول فرع يُرجع القيمة True. وضع النتيجة ≥ 50 قبل النتيجة ≥ 90 سيتم تصنيف كل درجة عالية على أنها نجاح.
  • أما "وإلا" فهو المصطلح الشامل: أي قيمة تفشل في كل اختبار سابق تنتقل إلى Else، لذلك لا يتم ترك أي مدخلات دون معالجة.
  • ممنوع التسلسل: لا يمكن لـ VBA القراءة 0 ≤ النتيجة ≤ 100. كتابة إذا كانت النتيجة أكبر من أو تساوي صفرًا وأقل من أو تساوي 100، يستخدم ال العوامل المنطقية بدلا من ذلك.
  • نفس الاختبار، ولكن بهياكل أخرى: الشرط نفسه هو الذي يحرك Do While و Select Case، لذا تنتقل المعاملات إلى كل حلقة تكتبها.

💡 نصيحة: قم بتعريف المتغير بنوع رقمي، كما هو موضح في النتيجة الخافتة طالماإذا بقيت القيمة من نوع Variant تحتوي على نص، "9" > "10" تُرجع القيمة True لأن المقارنة تتم حرفًا حرفًا.

مقارنة النصوص والتواريخ في VBA

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

تُقارن السلاسل حرفًا حرفًا باستخدام موضعها في الترتيب، لذا فإن "Apple" < "Banana" تُرجع القيمة True. بشكل افتراضي، تكون المقارنة حساسة لحالة الأحرف، مما يعني أن "guru99" = "Guru99" تُرجع خطأ. وضع خيار مقارنة النص يؤدي وضع هذا السطر في بداية الوحدة إلى تجاهل حالة الأحرف في جميع مقارنات السلاسل النصية داخل تلك الوحدة. لإجراء اختبار واحد دون تغيير الوحدة، استخدم دالة StrComp مع وسيطة vbTextCompare.

تُخزَّن التواريخ كأرقام تسلسلية تُحسب من 30 ديسمبر 1899، لذا فهي تُقارن مباشرةً مع نفس المُشغِّلين الستة. كتابة إذا كان تاريخ الاستحقاق < التاريخ الحالي، يكتشف البرنامج العنصر المتأخر بشكل صحيح، لأن دالة التاريخ تُرجع تاريخ النظام الحالي كرقم تسلسلي. المشكلة الوحيدة تكمن في التاريخ المُخزّن كنص: فمثلاً، التاريخ "01/02/2026" عند قراءته من ملف مُستورد هو سلسلة نصية وليس تاريخًا، ويتم مقارنته أبجديًا. لذا، يُنصح بتحويله باستخدام دالة التاريخ (CDate) قبل اختباره.

إن معرفة قواعد كل نوع من أنواع الأخطاء يزيل معظم المفاجآت، ولكن لا تزال بعض الأخطاء تفاجئ المطورين ذوي الخبرة.

أخطاء شائعة عند مقارنة القيم في VBA

تُفسر المشكلات الخمس التالية معظم المقارنات التي تُسفر عن نتيجة غير متوقعة.

  • تم الخلط بين التكليف والمقارنة: خارج نطاق الشرط، س = 5 يخزن 5 في x. داخل عبارة If، تختبر الرموز نفسها المساواة. لا يحتوي VBA على عامل == منفصل، لذا اقرأ السياق بعناية.
  • الاختبار Double القيم اللازمة للمساواة التامة: الدقة المخزنة تعني أن 0.1 + 0.2 = 0.3 تُرجع القيمة خطأ. قارن الفرق المُقرّب بدلاً من ذلك، على سبيل المثال إذا كانت القيمة المطلقة لـ (أ - ب) أقل من 0.000001، فإن.
  • مقارنة أي شيء مع القيمة الفارغة (Null): القيمة الفارغة (Null) لا تساوي أي شيء، ولا حتى قيمة فارغة أخرى. استخدم دالة IsNull للاختبار بدلاً من ذلك. = فارغ.
  • مقارنة نص برقم: الخلية التي تحتوي على النص "100" لا تساوي الرقم 100. قم بالتحويل باستخدام CLng أو CDbl قبل الاختبار.
  • قراءة .Text بدلاً من .Value: تُعيد الخاصية .Text النص المعروض، والذي يتم اقتطاعه وفقًا لعرض العمود والتنسيق. قارن دائمًا بالخاصية .Value.

قم بتنزيل ملف Excel أعلاه Code

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

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

يقارن الرمز "like" سلسلة نصية بنمط معين بدلاً من قيمة محددة. تتضمن الأحرف البديلة علامة النجمة (*) لأي أحرف وعلامة الاستفهام (?) لحرف واحد، لذا "Guru99" مثل "Guru*” تُرجع القيمة True.

استخدم عامل التشغيل Is، كما في If ws Is Nothing Then. تقارن علامة المساواة القيم، بينما يتحقق Is مما إذا كان متغيران من متغيرات الكائن يشيران إلى نفس الكائن، وهو الاختبار الوحيد الصحيح للكائنات.

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

نعم. الصق كتلة الشرط ومساعد الذكاء الاصطناعي tracيُحدد هذا الفرع الذي يلتقط كل قيمة، ثم يُشير إلى شرط ElseIf غير قابل للوصول أو إلى مقارنة بين نص ورقم. تأكد من الإصلاح خطوة بخطوة.ping من خلال الكود.

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