تنسيق VBA الشرطي | قم بتطبيق التنسيق الشرطي باستخدام VBA Excel

التنسيق الشرطي في Excel VBA

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

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

يتم استخدام FormatConditions.Add / Modify / Delete في VBA لإضافة / تعديل / حذف كائنات FormatCondition إلى المجموعة. يتم تمثيل كل تنسيق بواسطة كائن FormatCondition. FormatConditions هي خاصية لكائن Range وتحتوي Add على المعلمات التالية مع بناء الجملة أدناه:

FormatConditions.Add (النوع ، المشغل ، Formula1 ، Formula2) 

يحتوي بناء جملة الصيغة على الوسيطات التالية:

  • النوع: مطلوب ، يمثل ما إذا كان التنسيق الشرطي يعتمد على القيمة الموجودة في الخلية أو التعبير
  • عامل التشغيل: اختياري ، يمثل عامل التشغيل الذي سيتم استخدامه مع قيمة عندما يعتمد "النوع" على قيمة الخلية
  • Formula1: اختياري ، يمثل القيمة أو التعبير المرتبط بالتنسيق الشرطي.
  • Formula2: اختياري ، يمثل القيمة أو التعبير المرتبط بالجزء الثاني من التنسيق الشرطي عندما يكون المعامل: "عامل التشغيل" إما "xlBetween" أو "xlNotBetween"

يحتوي FormatConditions.Modify أيضًا على نفس بناء الجملة مثل FormatConditions.Add.

فيما يلي قائمة ببعض القيم / التعداد التي يمكن أن تأخذها بعض معاملات "إضافة" / "تعديل":

أمثلة على التنسيق الشرطي لـ VBA

فيما يلي أمثلة على التنسيق الشرطي في Excel vba.

يمكنك تنزيل قالب التنسيق الشرطي VBA من هنا - قالب التنسيق الشرطي لـ VBA

مثال 1

لنفترض أن لدينا ملف Excel يحتوي على أسماء وعلامات بعض الطلاب ، ونرغب في تحديد / إبراز العلامات بلون غامق وأزرق أكبر من 80 ، وكعريض وأحمر اللون أقل من 50. دعونا نرى البيانات الواردة في الملف:

نستخدم FormatConditions.Add وظيفة على النحو التالي لإنجاز هذا:

  • انتقل إلى المطور -> محرر Visual Basic:

  • انقر بزر الماوس الأيمن على اسم المصنف في جزء "Project-VBAProject" -> "إدراج" -> "الوحدة النمطية".

  • اكتب الآن الكود / الإجراء في هذه الوحدة:

رمز:

 التنسيق الفرعي () End Sub 

  • حدد المتغير rng ، condition1 ، condition2:

رمز:

 التنسيق الفرعي () Dim rng كـ Range Dim condition1 As FormatCondition ، condition2 As FormatCondition End Sub 

  • عيّن / أصلح النطاق المطلوب فيه التنسيق الشرطي باستخدام وظيفة VBA "Range":

رمز:

 التنسيق الفرعي () Dim rng كحالة أبعاد النطاق 1 As FormatCondition، condition2 As FormatCondition Set rng = Range ("B2"، "B11") End Sub 

  • احذف / امسح أي تنسيق شرطي موجود (إن وجد) من النطاق ، باستخدام "FormatConditions.Delete":

رمز:

 التنسيق الفرعي () Dim rng كحالة أبعاد النطاق 1 كـ FormatCondition ، condition2 As FormatCondition Set rng = Range ("B2"، "B11") rng.FormatConditions.Delete End Sub

  • الآن قم بتعريف وتعيين المعايير لكل تنسيق شرطي ، باستخدام FormatConditions.Add:

رمز:

 التنسيق الفرعي () Dim rng كحالة أبعاد النطاق 1 كـ FormatCondition ، condition2 As FormatCondition Set rng = Range ("B2"، "B11") rng.FormatConditions.Delete Set condition1 = rng.FormatConditions.Add (xlCellValue، xlGraduate، "= 80 ") تعيين condition2 = rng.FormatConditions.Add (xlCellValue، xlLess،" = 50 ") End Sub 

  • تحديد وتعيين التنسيق الذي سيتم تطبيقه على كل شرط

انسخ هذا الرمز والصقه في الوحدة النمطية لفئة VBA.

رمز:

تنسيق فرعي () 'تعريف المتغيرات: Dim rng كـ Range Dim condition1 As FormatCondition ، condition2 As FormatCondition' تحديد / تعيين النطاق الذي يجب أن يكون التنسيق الشرطي مطلوبًا فيه تعيين rng = Range ("B2"، "B11") 'إلى احذف / امسح أي تنسيق شرطي موجود من النطاق rng.FormatConditions.Delete "تحديد وتعيين المعايير لكل تنسيق شرطي Set condition1 = rng.FormatConditions.Add (xlCellValue، xlGraduate،" = 80 ") Set condition2 = rng.FormatConditions. أضف (xlCellValue، xlLess، "= 50") 'تعريف وتعيين التنسيق الذي سيتم تطبيقه على كل شرط مع condition1 .Font.Color = vbBlue .Font.Bold = True End With condition2 .Font.Color = vbRed .Font. بولد = صحيح نهاية مع نهاية الفرعية

الآن عندما نقوم بتشغيل هذا الرمز باستخدام مفتاح F5 أو يدويًا ، نرى أن العلامات التي تقل عن 50 يتم تمييزها بالخط العريض والأحمر ، في حين يتم تمييز العلامات الأكبر من 80 بالخط العريض والأزرق على النحو التالي:

ملاحظة: بعض خصائص مظهر الخلايا المنسقة التي يمكن استخدامها مع FormatCondition هي:

المثال رقم 2

دعنا نقول في المثال أعلاه أن لدينا عمودًا آخر يشير أيضًا إلى أن الطالب هو "ممتاز" إذا حصل على أكثر من 80 علامة ، وإلا فسيتم كتابة "النجاح / الفشل" ضدهم. نرغب الآن في إبراز القيم المذكورة كـ "Topper" مثل Bold و Blue. دعونا نرى البيانات الواردة في الملف:

في هذه الحالة ، سيعمل الكود / الإجراء على النحو التالي:

رمز:

 تنسيق نص فرعي () End Sub 

تحديد وتعيين التنسيق الذي سيتم تطبيقه على كل شرط

رمز:

 Sub TextFormatting () With Range ("c2: c11"). FormatConditions.Add (xlTextString، TextOperator: = xlContains، String: = "topper") With .Font .Bold = True .Color = vbBlue End With End With Sub 

يمكننا أن نرى في الكود أعلاه أننا نرغب في اختبار ما إذا كان النطاق: "C2: C11" يحتوي على السلسلة: "Topper" ، لذا فإن المعلمة: "Operator" لـ "Format.Add" تأخذ التعداد: "xlContains" ، لاختبار هذا الشرط في النطاق الثابت (مثل C2: C11) ، ثم قم بإجراء التنسيق الشرطي المطلوب (تغييرات الخط) في هذا النطاق.

الآن عندما نقوم بتشغيل هذا الرمز يدويًا أو بالضغط على المفتاح F5 ، نرى أن قيم الخلية التي تحتوي على "Topper" يتم تمييزها باللون الأزرق والخط العريض:

ملاحظة: لذلك ، رأينا في المثالين أعلاه كيفية عمل طريقة "الإضافة" في حالة وجود أي معايير لقيمة الخلية (سلسلة رقمية أو نصية).

فيما يلي بعض الأمثلة / المعايير الأخرى التي يمكن استخدامها لاختبار وبالتالي تطبيق التنسيق الشرطي لـ VBA:

  • تنسيق حسب الفترة الزمنية
  • حالة متوسطة
  • حالة مقياس اللون
  • حالة IconSet
  • حالة Databar
  • قيم فريدة
  • قيم مكررة
  • قيم Top10
  • الحالة المئوية
  • حالة الفراغات ، إلخ.

مع اختلاف الظروف المراد اختبارها ، يتم أخذ قيم / تعداد مختلف بواسطة معلمات "إضافة".

أشياء يجب تذكرها حول التنسيق الشرطي لـ VBA

  • يتم استخدام طريقة "Add" مع "FormatConditions" لإنشاء تنسيق شرطي جديد ، وطريقة "Delete" لحذف أي تنسيق شرطي ، وطريقة "Modify" لتغيير أي تنسيق شرطي موجود.
  • تفشل طريقة "إضافة" مع "FormatConditions Collection" إذا تم إنشاء أكثر من ثلاثة تنسيقات شرطية لنطاق واحد.
  • لتطبيق أكثر من ثلاثة تنسيقات شرطية على نطاق باستخدام طريقة "إضافة" ، يمكننا استخدام "إذا" أو "تحديد حالة".
  • إذا كانت طريقة "إضافة" تحتوي على معلمة "النوع" الخاصة بها مثل: "xlExpression" ، فسيتم تجاهل المعلمة "عامل التشغيل".
  • يمكن أن تكون المعلمات: "Formula1" و "Formula2" في طريقة "Add" مرجعًا لخلية أو قيمة ثابتة أو قيمة سلسلة أو حتى صيغة.
  • يتم استخدام المعلمة: "Formula2" فقط عندما تكون المعلمة: "Operator" إما "xlBetween" أو "xlNotBetween" ، وإلا يتم تجاهلها.
  • لإزالة جميع التنسيقات الشرطية من أي ورقة عمل ، يمكننا استخدام طريقة "الحذف" كما يلي:
الخلايا. FormatConditions. الحذف