条件付き書式をVBAで扱うとき、数式を使った条件を設定することができます。
このとき、条件式は Formula1 プロパティに数式として指定します。
1. 数式条件の指定方法
基本の書き方は次の通りです。
Sub 数式条件の基本()
Dim rng As Range
Set rng = Range("A1:A10") '対象範囲
'数式を条件にして書式を設定
rng.FormatConditions.Add _
Type:=xlExpression, _
Formula1:="=A1>100"
'書式の指定(背景を黄色)
rng.FormatConditions(1).Interior.Color = RGB(255, 255, 150)
End Sub
2. 重要なポイント
- Type:=xlExpression を指定する
xlCellValue→ セルの値を直接比較する条件xlExpression→ 数式を使った柔軟な条件
xlExpressionを指定します。 - Formula1は「=」から始める
- Excelと同じく、条件式は「
=A1>100」のように「=」から記述する必要があります。
- Excelと同じく、条件式は「
- 対象範囲の左上セルを基準に考える
Formula1に書く数式は、範囲の 左上セルを基準 として記述します。- 上の例では
Range("A1:A10")を対象にしているため、式の参照はA1(=A1>100)を基準にします。Range("B1:B10")が対象の場合は、式の参照はB1(=B1>100)を基準にします。
3. 具体例
例えば「A列の値が100を超えたら背景色を黄色」にしたい場合:
rng.FormatConditions.Add _
Type:=xlExpression, _
Formula1:="=A1>100"
rng.FormatConditions(1).Interior.Color = RGB(255, 255, 150)
この条件は範囲全体に適用され、各セルごとに「そのセルの値が100より大きいか」を判定します。
4. まとめ
- 数式条件を使うには
Type:=xlExpressionを指定する Formula1には「=」から始まる数式を入れる- 範囲の左上セルを基準に数式を書く
数式条件を使うことで、単純な値の比較だけでなく、他のセル参照や複数条件を使った柔軟な判定が可能になります。
コメント