この記事ではVBAマクロで条件付き書式を設定する方法について解説していきます。
ポイントとしてはFormatConditions、ModifyAppliesToRange、RGBを使用することです。
なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名(あなた自身が名付けていい場所)を少々変わった名称にしております。
そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。
それでは詳しく見ていきましょう!
VBAマクロで条件付き書式を設定する方法【FormatConditions】
それではまず、VBAマクロで条件付き書式を設定する方法について解説していきます。
サンプルとしてここでは、B2からF5の範囲で、10以上ならば赤と罫線追加を数式で複数条件で設定するコードを紹介します!
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub joukentuikisyoshikisettei()
'B2からF5の範囲を変数「hani_hensuu」として設定
Dim hani_hensuu As Range
Set hani_hensuu = Range("B2:F5")
'すべての条件付き書式をクリア
hani_hensuu.FormatConditions.Delete
'条件付き書式を設定
'FormatConditionsを使い設定する
'「Interior.Color」にて色を指定(rgbで指定)
With hani_hensuu.FormatConditions.Add(Type:=xlExpression, Formula1:="=B2>=10")
.Interior.Color = RGB(255, 0, 0)
'「Borders」にて罫線を指定
.Borders.LineStyle = xlContinuous
End With
End Sub
コードのAlt+F8を押し、マクロ選択画面でjoukentuikisyoshikisettei関数を実行します。
うまく上の条件付き書式が設定されることが確認できますね(^^)/
コードの意味詳細
上記のコードでは、まず「hani_hensuu」という変数を定義し、B2からF5の範囲を設定しています。
次に「hani_hensuu.FormatConditions.Delete」ですべての条件付き書式をクリアしています。
そして「With hani_hensuu.FormatConditions.Add」にて条件付き書式を新たに設定しています。
ここでは「B2>=10」を満たす場合に、色を赤(RGB(255,0,0))に設定し、罫線をつける設定をしています。
VBAマクロで条件付き書式を取得しコピーする方法【FormatConditions】
続いては、VBAマクロで条件付き書式を取得しコピーする方法について解説していきます。
ここでは具体例として、シート1のB3の条件付き書式をすべて取得し、シート2全体にコピーするコードとしています。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub joukentuikisyoshikiCopy()
'シート1のB3の条件付き書式を変数「gensyojouken_hensuu」に設定
Dim gensyojouken_hensuu As FormatConditions
Set gensyojouken_hensuu = Worksheets("Sheet1").Range("B3").FormatConditions
'シート2のすべての条件付き書式をクリア
Worksheets("Sheet2").Cells.FormatConditions.Delete
'「gensyojouken_hensuu」をシート2全体にコピー
gensyojouken_hensuu.ModifyAppliesToRange Worksheets("Sheet2").Cells
End Sub
コードのAlt+F8を押し、マクロ選択画面でjoukentuikisyoshikiCopy関数を実行します。
コードの意味詳細
上記のコードでは、まず「gensyojouken_hensuu」という変数を定義し、シート1のB3セルの条件付き書式を設定しています。
次に「Worksheets(“Sheet2”).Cells.FormatConditions.Delete」で、シート2のすべての条件付き書式をクリアしています。
最後に「gensyojouken_hensuu.ModifyAppliesToRange Worksheets(“Sheet2”).Cells」にて、「gensyojouken_hensuu」の条件付き書式をシート2全体にコピーしています。