【VBA】ユーザー入力を基に条件付き書式を動的に設定する方法

条件付き書式は固定的にルールを決めるだけでなく、ユーザーが入力した値を基準に動的に変化させる ことも可能です。
例えば「入力したしきい値以上なら赤文字にする」「ユーザーが指定した文字を含むセルを強調する」など、柔軟な活用ができます。

ここでは、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 に入力値を渡すことで柔軟なカスタマイズが可能

コメント

タイトルとURLをコピーしました