Vba: як застосувати умовне форматування до клітинок


Для застосування умовного форматування до клітинок у VBA можна використовувати такі методи:

Спосіб 1. Застосуйте умовне форматування на основі умови

 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

Спосіб 2. Застосуйте умовне форматування на основі кількох умов

 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

Спосіб 3. Видаліть усі правила умовного форматування з клітинок

 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» підлягають спеціальному умовному форматуванню.

Єдина команда з назвою «Лейкерс» залишилася в спокої, оскільки ми не вказали жодних умовних правил форматування для комірок із такою назвою команди.

Приклад 3. Видалення всіх правил умовного форматування з клітинок

Нарешті, ми можемо використати наступний макрос, щоб видалити всі правила умовного форматування з комірок на поточному аркуші:

 Sub RemoveConditionalFormatting()
ActiveSheet.Cells.FormatConditions.Delete
End Sub

Коли ми запускаємо цей макрос, ми отримуємо такий результат:

Зверніть увагу, що все умовне форматування було видалено з кожної клітинки.

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання у VBA:

VBA: як підрахувати випадки появи символів у рядку
VBA: як перевірити, чи містить рядок інший рядок
VBA: формула для «Якщо» клітинка містить»

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *