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
If IsNumeric(Range("A1")) = True Then 'إذا كانت القيمة هي رقم ...
ينتج عن الكود التالي نفس تأثير الرمز السابق (لا نحتاج إلى تضمين = True لأن البنية نفسها هي فحص شرطي):
- If IsNumeric(Range("A1")) = True Then
If IsNumeric(Range("A1")) = True Then 'إذا كانت القيمة هي رقم ...
إذا أردنا التحقق مما إذا كانت القيمة ليست رقمًا ، فيمكننا القيام بذلك بطريقتين:
- If IsNumeric(Range("A1")) = False Then
If IsNumeric(Range("A1")) = False Then 'إذا كانت القيمة ليست رقمًا ...
- If Not IsNumeric(Range("A1")) Then
If Not IsNumeric(Range("A1")) Then 'إذا كانت القيمة ليست رقمًا ...
لنلقِ نظرة على بعض الوظائف الأخرى المشابهة لـ IsNumeric:
- If IsDate(Range("A1")) Then
If IsDate(Range("A1")) Then 'إذا كانت القيمة هي التاريخ ...
- If IsEmpty(Range("A1")) Then
If IsEmpty(Range("A1")) Then 'إذا كانت فارغة ...
- If var_object Is Nothing Then
If var_object Is Nothing Then 'إذا لم يتم تحديد الكائن ...
التحقق من نوع المتغير
لتنفيذ الأوامر بناءً على نوع المتغير ، سنحتاج إلى استخدام وظيفة VarType.
ستظهر قائمة أنواع المتغيرات بمجرد إدخال علامة "=":
- If VarType(my_variable) = vbInteger Then
If VarType(my_variable) = vbInteger Then 'إذا كان my_variable نوعًا متغيرًا Integer ...
قيم الثوابت:
ثابت |
قيمة |
vbEmpty | 0 |
vbNull | 1 |
vbInteger | 2 |
vbLong | 3 |
vbSingle | 4 |
vbDouble | 5 |
vbCurrency | 6 |
vbDate | 7 |
vbString | 8 |
vbObject | 9 |
vbError | 10 |
- If VarType(my_variable) = vbInteger Then
-
- If VarType(my_variable) = 2 Then
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
my_variable = "Example 12345"
If my_variable = "Example 12345" Then '=> TRUE (TRUE)
في هذه الحالة ، يكون الشريطان متماثلان ، ولكن إذا أردنا التحقق مما إذا كان المتغير يحتوي على القيمة "12345" ؛ دون النظر إلى الأحرف الأخرى ، يجب أن نستخدم الأمر Like والعامل * (العلامة النجمية) قبل وبعد القيمة التي نبحث عنها.
يتم فك تشفير عامل التشغيل * (علامة النجمة) على النحو التالي: أي حرف أو مجموعة من الأحرف:
- my_variable = "Example 12345"
-
- If my_variable Like "* 12345 *" Then
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
my_variable = "Example 12345"
If my_variable Like "Example 12###" Then '=> TRUE (TRUE)
المشغل أو العامل؟ (علامة الاستفهام) يتم فك شفرتها على النحو التالي: أي حرف مفرد:
- my_variable = "Example 12345"
-
- If my_variable Like "?xample?1234?" Then
my_variable = "Example 12345"
If my_variable Like "?xample?1234?" Then '=> TRUE (TRUE)
يمكننا أيضًا استخدام أحرف محددة أو مجموعة من الأحرف بنفس الطريقة:
- يرمز [abc] إلى: أي من الأحرف التالية: أ ب ج
- يتم فك تشفير [a-g] على النحو التالي: أي من الأحرف التالية: a b c d e f g
- [369] يتم فك شفرته على النحو التالي: أي واحد من الأحرف التالية: 3 6 9
- [2-5] يتم فك شفرته على النحو التالي: أي واحد من الرموز التالية: 2 3 4 5
- يتم فك شفرة [؟ * #] على النحو التالي: أي واحد من الأحرف التالية:؟ * #
- my_variable = "Example 12345"
-
- If my_variable Like "[DEF] xample 1234 [4-7]" Then
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
my_variable = "Example 12345"
If my_variable Like "[! GHIJ] xample 1234 [! 6-9]" Then '=> TRUE (TRUE)
في هذا السياق ، لا تكافئ الأحرف الكبيرة نفس الأحرف الصغيرة. إذا كنت لا تريد التمييز بين الأحرف الكبيرة والصغيرة ، فما عليك سوى كتابة الأمر Option Compare Text في بداية الوحدة النمطية.