【Excelマクロ】入力値に応じてフォントサイズやスタイルを変える

入力内容に応じて、セルのフォントサイズやスタイルを自動的に変えるマクロは、見た目を整えるだけでなく、視認性や優先度を直感的に伝える手段として非常に有効です。

たとえば、点数が高ければ大きな文字で「目立たせる」、重要なワードには「太字」にするといった使い方ができます。

今回は、入力値に応じてフォントの見た目を変えるマクロの基本と応用を紹介します。

点数に応じてフォントサイズを変更するマクロ

次のコードでは、B列に入力された点数に応じて、フォントサイズを変更します。

Sub ChangeFontSize()

    Dim i As Long
    Dim val As Variant

    For i = 2 To 10 ' B2:B10を対象に処理
        val = Cells(i, 2).Value

        If IsNumeric(val) Then
            If val >= 80 Then
                Cells(i, 2).Font.Size = 16 ' 高得点は大きな文字
            ElseIf val >= 50 Then
                Cells(i, 2).Font.Size = 12 ' 中間層は普通のサイズ
            Else
                Cells(i, 2).Font.Size = 9  ' 低得点は小さめに
            End If
        End If
    Next i

End Sub

解説

  • IsNumeric(val) で数値かどうかを判定しています。
  • フォントサイズの設定は Cells(i, 2).Font.Size = 数値 のように書きます。
  • 行ごとにチェックし、点数に応じて見た目を変えるだけで「重要度」が視覚的に伝わるようになります。

特定の文字列に応じて太字・斜体を設定

文字列の入力に応じてスタイルを変更するには、次のように記述できます。

Sub ChangeFontStyle()

    Dim i As Long
    Dim txt As String

    For i = 2 To 10 ' C2:C10を対象に処理
        txt = Cells(i, 3).Value

        Select Case txt
            Case "重要"
                Cells(i, 3).Font.Bold = True
            Case "注意"
                Cells(i, 3).Font.Italic = True
            Case "不要"
                Cells(i, 3).Font.Strikethrough = True
            Case Else
                ' なにもスタイルを変更しない
        End Select
    Next i

End Sub

解説

  • 文字列によってスタイルを切り替えたいときは Select Case が便利です。
  • Bold(太字)、Italic(斜体)、Strikethrough(取り消し線)など、視覚に訴える装飾が簡単にできます。
  • スタイル変更は見落とし防止・レビュー効率向上に役立ちます。

入力後すぐに反映:Changeイベントとの組み合わせ

これまでの例はマクロを手動で実行する必要がありましたが、セルに入力した直後にスタイルを変えることもできます。

たとえば、B列の数値に応じて自動でフォントサイズを変更したい場合は、対象シートのコードに次のように記述します。

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("B2:B10")) Is Nothing Then

        Dim v As Variant
        v = Target.Value

        If IsNumeric(v) Then
            If v >= 80 Then
                Target.Font.Size = 16
            ElseIf v >= 50 Then
                Target.Font.Size = 12
            Else
                Target.Font.Size = 9
            End If
        End If

    End If

End Sub

補足

このコードは、「B2:B10セルのいずれかが変更されたとき」にメッセージを表示する処理です。

  • Worksheet_Change は、対象シートの「コード」ウィンドウに直接書く必要があります(標準モジュールではなく)
  • Intersect(Target, Range("B2:B10")) は、「変更されたセル(Target)」が「B2:B10の範囲と重なっているか」を判定します。
  • Nothing でなければ重なっている、つまりその範囲が変更されたことを意味します。
  • セルが変更されるたびに条件チェックされ、即時にフォントスタイルが反映されます。

実装のメリット

  • 入力後すぐに反応するので自然な案内になる
  • 繰り返し作業を減らせる
  • 自動化感が増して使いやすさ向上につながる

まとめ

入力値に応じてフォントサイズやスタイルを自動で変更することで、次のような効果が得られます。

  • 情報の優先度が直感的に伝わる
  • 入力ミスや重要なデータの見落としを防げる
  • 入力内容に対する“動的な反応”が得られ、使いやすさ向上につながる

ちょっとした工夫でExcelシートの見た目と使いやすさは大きく変わります。

ぜひ、あなたの業務や報告書に応じて取り入れてみてください。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール