فبا: كيفية تطبيق التنسيق الشرطي على الخلايا
يمكنك استخدام الطرق التالية في VBA لتطبيق التنسيق الشرطي على الخلايا:
الطريقة الأولى: تطبيق التنسيق الشرطي بناءً على شرط ما
Sub ConditionalFormatOne()
Dim rg As Range
Dim cond As FormatCondition
'specify range to apply conditional formatting
Set rg = Range(" B2:B11 ")
'clear any existing conditional formatting
rg.FormatConditions.Delete
'apply conditional formatting to any cell in range B2:B11 with value greater than 30
Set cond = rg.FormatConditions.Add(xlCellValue, xlGreater, " =30 ")
'define conditional formatting to use
With cond
.Interior.Color = vbGreen
.Font.Color = vbBlack
.Font.Bold = True
End With
End Sub
الطريقة الثانية: تطبيق التنسيق الشرطي بناءً على شروط متعددة
Sub ConditionalFormatMultiple()
Dim rg As Range
Dim cond1 As FormatCondition, cond2 As FormatCondition, cond3 As FormatCondition
'specify range to apply conditional formatting
Set rg = Range(" A2:A11 ")
'clear any existing conditional formatting
rg.FormatConditions.Delete
'specify rules for conditional formatting
Set cond1 = rg.FormatConditions.Add(xlCellValue, xlEqual, “ Mavericks ”)
Set cond2 = rg.FormatConditions.Add(xlCellValue, xlEqual, “ Blazers ”)
Set cond3 = rg.FormatConditions.Add(xlCellValue, xlEqual, “ Celtics ”)
'define conditional formatting to use
With cond1
.Interior.Color = vbBlue
.Font.Color = vbWhite
.Font.Italic = True
End With
With cond2
.Interior.Color = vbRed
.Font.Color = vbWhite
.Font.Bold = True
End With
With cond3
.Interior.Color = vbGreen
.Font.Color = vbBlack
End With
End Sub
الطريقة الثالثة: إزالة كافة قواعد التنسيق الشرطي من الخلايا
Sub RemoveConditionalFormatting()
ActiveSheet.Cells.FormatConditions.Delete
End Sub
توضح الأمثلة التالية كيفية استخدام كل طريقة عمليًا مع مجموعة البيانات التالية في Excel:
مثال 1: تطبيق التنسيق الشرطي بناءً على شرط ما
يمكننا استخدام الماكرو التالي لملء الخلايا في النطاق B2:B11 التي لها قيمة أكبر من 30 بخلفية خضراء وخط أسود ونمط نص غامق:
Sub ConditionalFormatOne()
Dim rg As Range
Dim cond As FormatCondition
'specify range to apply conditional formatting
Set rg = Range(" B2:B11 ")
'clear any existing conditional formatting
rg.FormatConditions.Delete
'apply conditional formatting to any cell in range B2:B11 with value greater than 30
Set cond = rg.FormatConditions.Add(xlCellValue, xlGreater, " =30 ")
'define conditional formatting to use
With cond
.Interior.Color = vbGreen
.Font.Color = vbBlack
.Font.Bold = True
End With
End Sub
عندما نقوم بتشغيل هذا الماكرو، نحصل على الإخراج التالي:
لاحظ أن كل خلية في النطاق B2:B11 لها قيمة أكبر من 30 تخضع للتنسيق الشرطي.
أي خلية بقيمة تساوي أو أقل من 30 يتم تركها بمفردها.
المثال 2: تطبيق التنسيق الشرطي بناءً على شروط متعددة
يمكننا استخدام الماكرو التالي لتطبيق التنسيق الشرطي على الخلايا الموجودة في النطاق A2:A11 بناءً على اسم الفريق الخاص بها:
Sub ConditionalFormatMultiple()
Dim rg As Range
Dim cond1 As FormatCondition, cond2 As FormatCondition, cond3 As FormatCondition
'specify range to apply conditional formatting
Set rg = Range(" A2:A11 ")
'clear any existing conditional formatting
rg.FormatConditions.Delete
'specify rules for conditional formatting
Set cond1 = rg.FormatConditions.Add(xlCellValue, xlEqual, “ Mavericks ”)
Set cond2 = rg.FormatConditions.Add(xlCellValue, xlEqual, “ Blazers ”)
Set cond3 = rg.FormatConditions.Add(xlCellValue, xlEqual, “ Celtics ”)
'define conditional formatting to use
With cond1
.Interior.Color = vbBlue
.Font.Color = vbWhite
.Font.Italic = True
End With
With cond2
.Interior.Color = vbRed
.Font.Color = vbWhite
.Font.Bold = True
End With
With cond3
.Interior.Color = vbGreen
.Font.Color = vbBlack
End With
End Sub
عندما نقوم بتشغيل هذا الماكرو، نحصل على الإخراج التالي:
لاحظ أن الخلايا التي تحتوي على أسماء الفرق “Mavericks” و”Blazers” و”Celtics” تخضع جميعها لتنسيق شرطي محدد.
تم ترك الفريق الوحيد الذي يحمل اسم “Lakers” بمفرده لأننا لم نحدد أي قواعد تنسيق شرطي للخلايا التي تحمل اسم الفريق هذا.
المثال 3: إزالة كافة قواعد التنسيق الشرطي من الخلايا
أخيرًا، يمكننا استخدام الماكرو التالي لإزالة كافة قواعد التنسيق الشرطي من الخلايا الموجودة في الورقة الحالية:
Sub RemoveConditionalFormatting()
ActiveSheet.Cells.FormatConditions.Delete
End Sub
عندما نقوم بتشغيل هذا الماكرو، نحصل على الإخراج التالي:
لاحظ أنه تمت إزالة كافة التنسيقات الشرطية من كل خلية.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في VBA:
فبا: كيفية حساب تكرارات الأحرف في سلسلة
VBA: كيفية التحقق مما إذا كانت السلسلة تحتوي على سلسلة أخرى
VBA: صيغة لـ “إذا” تحتوي الخلية على “