条件付き書式を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
には「=」から始まる数式を入れる- 範囲の左上セルを基準に数式を書く
数式条件を使うことで、単純な値の比較だけでなく、他のセル参照や複数条件を使った柔軟な判定が可能になります。
コメント