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: 条件に基づいて条件付き書式を適用する
次のマクロを使用すると、30 を超える値を持つ範囲B2:B11 のセルを背景が緑色、フォントが黒色、太字のテキスト スタイルで塗りつぶすことができます。
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: 文字列に別の文字列が含まれているかどうかを確認する方法
VBA: セルに「次の値が含まれている場合」を表す数式