条件付き書式は固定的にルールを決めるだけでなく、ユーザーが入力した値を基準に動的に変化させる ことも可能です。
例えば「入力したしきい値以上なら赤文字にする」「ユーザーが指定した文字を含むセルを強調する」など、柔軟な活用ができます。
ここでは、InputBox
を使ってユーザーに値を入力させ、その値を条件付き書式の Formula1
に渡す方法を解説します。
1. 基本の考え方
- InputBox関数 を使ってユーザーに入力値を受け取る
- 受け取った値を Formula1 に渡して条件を作成
- その条件を FormatConditions.Add で設定する
これにより「ユーザーが操作するたびに違う条件」で書式を適用できます。
2. 数値を基準にしたサンプルコード
例:ユーザーが入力したしきい値以上のセルを赤文字にする
Sub 条件付き書式_ユーザー入力_数値()
Dim ws As Worksheet
Dim targetRange As Range
Dim threshold As Variant
Set ws = ThisWorkbook.Sheets("Sheet1")
'ユーザーにしきい値を入力させる
threshold = InputBox("条件付き書式のしきい値を入力してください(例:100)")
'入力がキャンセルされた場合は終了
If threshold = "" Then Exit Sub
'対象範囲を指定
Set targetRange = ws.Range("A2:A20")
'既存の条件付き書式を削除
targetRange.FormatConditions.Delete
'入力値を基準に条件を設定
targetRange.FormatConditions.Add _
Type:=xlCellValue, _
Operator:=xlGreaterEqual, _
Formula1:=threshold
targetRange.FormatConditions(1).Font.Color = RGB(255, 0, 0)
End Sub
コードのポイント
InputBox
によってユーザーが入力した値をthreshold
に代入Formula1:=threshold
で条件付き書式の基準として利用- 入力値が空の場合(キャンセル)は処理を中断
3. 文字列を基準にしたサンプルコード
例:ユーザーが入力した文字列を含むセルを黄色背景にする
Sub 条件付き書式_ユーザー入力_文字列()
Dim ws As Worksheet
Dim targetRange As Range
Dim keyword As String
Set ws = ThisWorkbook.Sheets("Sheet1")
'ユーザーにキーワードを入力させる
keyword = InputBox("強調したい文字列を入力してください")
'入力がキャンセルされた場合は終了
If keyword = "" Then Exit Sub
'対象範囲を指定
Set targetRange = ws.Range("B2:B20")
'既存の条件付き書式を削除
targetRange.FormatConditions.Delete
'入力文字を含むセルを対象(部分一致検索)
targetRange.FormatConditions.Add _
Type:=xlExpression, _
Formula1:="=ISNUMBER(SEARCH(""" & keyword & """,B2))"
targetRange.FormatConditions(1).Interior.Color = RGB(255, 255, 0)
End Sub
コードのポイント
SEARCH
関数を使って部分一致検索を実現""" & keyword & """
で入力値を数式に埋め込むxlExpression
(数式(論理式)に基づく条件) を使うことで自由度の高い数式条件を設定可能
4. 応用例
- 数値:売上が「ユーザーが入力した金額以上」を強調
- 文字列:状態が「ユーザーが入力したステータス」に一致した行を色付け
- 日付:入力された基準日より前か後かを条件にする
5. まとめ
InputBox
を使えば、ユーザーの入力値を基準に条件付き書式を動的に変更できる- 数値・文字列どちらも対応可能
Formula1
に入力値を渡すことで柔軟なカスタマイズが可能
コメント