Vba: jak zastosować formatowanie warunkowe do komórek
Aby zastosować formatowanie warunkowe do komórek, możesz użyć następujących metod w VBA:
Metoda 1: Zastosuj formatowanie warunkowe na podstawie warunku
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
Metoda 2: Zastosuj formatowanie warunkowe na podstawie wielu warunków
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
Metoda 3: Usuń wszystkie reguły formatowania warunkowego z komórek
Sub RemoveConditionalFormatting()
ActiveSheet.Cells.FormatConditions.Delete
End Sub
Poniższe przykłady pokazują, jak w praktyce zastosować każdą metodę z następującym zbiorem danych w Excelu:
Przykład 1: Zastosuj formatowanie warunkowe na podstawie warunku
Możemy użyć poniższego makra, aby wypełnić komórki z zakresu B2:B11 o wartości większej niż 30 zielonym tłem, czarną czcionką i pogrubionym stylem tekstu:
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
Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:
Należy pamiętać, że każda komórka w zakresie B2:B11 , która ma wartość większą niż 30, podlega formatowaniu warunkowemu.
Każdą komórkę o wartości równej lub mniejszej niż 30 pozostawia się po prostu samą.
Przykład 2: Zastosuj formatowanie warunkowe w oparciu o wiele warunków
Możemy użyć następującego makra, aby zastosować formatowanie warunkowe do komórek z zakresu A2:A11 na podstawie nazwy zespołu:
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
Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:
Należy pamiętać, że komórki z nazwami drużyn „Mavericks”, „Blazers” i „Celtics” podlegają określonemu formatowaniu warunkowemu.
Jedyna drużyna o nazwie „Lakers” pozostaje sama, ponieważ nie określiliśmy żadnych reguł formatowania warunkowego dla komórek o tej nazwie.
Przykład 3: Usuń wszystkie reguły formatowania warunkowego z komórek
Na koniec możemy użyć poniższego makra, aby usunąć wszystkie reguły formatowania warunkowego z komórek w bieżącym arkuszu:
Sub RemoveConditionalFormatting()
ActiveSheet.Cells.FormatConditions.Delete
End Sub
Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:
Należy pamiętać, że z każdej komórki usunięto całe formatowanie warunkowe.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:
VBA: Jak liczyć wystąpienia znaków w ciągu
VBA: jak sprawdzić, czy ciąg zawiera inny ciąg
VBA: formuła na „Jeśli” komórka zawiera”