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

Когда мы запускаем этот макрос, мы получаем следующий вывод:

Обратите внимание, что ячейки с названиями команд «Маверикс», «Блэйзерс» и «Селтикс» подлежат определенному условному форматированию.

Единственная команда с названием «Лейкерс» осталась одна, поскольку мы не указали никаких правил условного форматирования для ячеек с таким названием команды.

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

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

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

Когда мы запускаем этот макрос, мы получаем следующий вывод:

Обратите внимание, что из каждой ячейки удалено все условное форматирование.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:

VBA: как подсчитать вхождение символов в строку
VBA: как проверить, содержит ли строка другую строку
VBA: формула «Если» ячейка содержит»

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *