TOP

VBA-Lesson 7.2. الشروط (Conditions)

بالإضافة إلى التحقق من الشرطين If ... Then ... Else و Select Case ، يمكننا أيضًا استخدام عمليات التحقق التالية:

  • مقارنة بين أنواع البيانات (الدالات IsNumeric، IsDate، IsEmpty، Operator Is Nothing)
  • مقارنة أنواع المتغيرات (دالة VarType)
  • مقارنة التغذية النصية (عامل التشغيل Like)

  • فحص نوع البيانات

    IsNumeric (الوظيفة التي استخدمناها في الدرس السابق) تُرجع TRUE (TRUE) إذا كانت القيمة رقمًا ، و FALSE (FALSE) إذا - ليس رقمًا:

    If IsNumeric(Range("A1")) = True Then 'إذا كانت القيمة هي رقم ...
    

    ينتج عن الكود التالي نفس تأثير الرمز السابق (لا نحتاج إلى تضمين = True لأن البنية نفسها هي فحص شرطي):

    If IsNumeric(Range("A1")) = True Then 'إذا كانت القيمة هي رقم ...
    

    إذا أردنا التحقق مما إذا كانت القيمة ليست رقمًا ، فيمكننا القيام بذلك بطريقتين:

    If IsNumeric(Range("A1")) = False Then 'إذا كانت القيمة ليست رقمًا ...
    
    If Not IsNumeric(Range("A1")) Then 'إذا كانت القيمة ليست رقمًا ...
    

    لنلقِ نظرة على بعض الوظائف الأخرى المشابهة لـ IsNumeric:

    If IsDate(Range("A1")) Then 'إذا كانت القيمة هي التاريخ ...
    
    If IsEmpty(Range("A1")) Then 'إذا كانت فارغة ...
    
    If var_object Is Nothing Then 'إذا لم يتم تحديد الكائن ...
    

    التحقق من نوع المتغير

    لتنفيذ الأوامر بناءً على نوع المتغير ، سنحتاج إلى استخدام وظيفة VarType.

    ستظهر قائمة أنواع المتغيرات بمجرد إدخال علامة "=":

    If VarType(my_variable) = vbInteger Then 'إذا كان my_variable نوعًا متغيرًا Integer ...
    

    قيم الثوابت:

    ثابت قيمة
    vbEmpty0
    vbNull1
    vbInteger2
    vbLong3
    vbSingle4
    vbDouble5
    vbCurrency6
    vbDate7
    vbString8
    vbObject9
    vbError10
     If VarType(my_variable) = vbInteger Then 'إذا كان my_variable نوعًا متغيرًا Integer ...
     'مطابق لـ:
     If VarType(my_variable) = 2 Then 'إذا كان my_variable نوعًا متغيرًا Integer ...
    

    مقارنة موجزات النص (Like)

    قبل ذلك بقليل استخدمنا مقتطف الشفرة التالي:

    my_variable = "Example 12345"
    
    If my_variable = "Example 12345" Then '=> TRUE (TRUE)
    

    في هذه الحالة ، يكون الشريطان متماثلان ، ولكن إذا أردنا التحقق مما إذا كان المتغير يحتوي على القيمة "12345" ؛ دون النظر إلى الأحرف الأخرى ، يجب أن نستخدم الأمر Like والعامل * (العلامة النجمية) قبل وبعد القيمة التي نبحث عنها.

    يتم فك تشفير عامل التشغيل * (علامة النجمة) على النحو التالي: أي حرف أو مجموعة من الأحرف:

    my_variable = "Example 12345"
    
    If my_variable Like "* 12345 *" Then '=> TRUE (TRUE)
    

    عامل التشغيل # (التجزئة) يتم فك ترميزه على النحو التالي: أي حرف رقمي واحد من 0 إلى 9:

    my_variable = "Example 12345"
    
    If my_variable Like "Example 12###" Then '=> TRUE (TRUE)
    

    المشغل أو العامل؟ (علامة الاستفهام) يتم فك شفرتها على النحو التالي: أي حرف مفرد:

    my_variable = "Example 12345"
    
    If my_variable Like "?xample?1234?" Then '=> TRUE (TRUE)
    

    يمكننا أيضًا استخدام أحرف محددة أو مجموعة من الأحرف بنفس الطريقة:

    my_variable = "Example 12345"
    
    If my_variable Like "[DEF] xample 1234 [4-7]" Then '=> TRUE (TRUE)
    

    المشغل أو العامل! (علامة التعجب) المضافة بعد [تعني: أي حرف غير محاط بأقواس مربعة:

    my_variable = "Example 12345"
    
    If my_variable Like "[! GHIJ] xample 1234 [! 6-9]" Then '=> TRUE (TRUE)
    
    في هذا السياق ، لا تكافئ الأحرف الكبيرة نفس الأحرف الصغيرة. إذا كنت لا تريد التمييز بين الأحرف الكبيرة والصغيرة ، فما عليك سوى كتابة الأمر Option Compare Text في بداية الوحدة النمطية.