VBAで入力値に応じてフォントサイズや太字・斜体などのスタイルを変えるには、Font.Size や Font.Bold などのプロパティを使います。条件分岐と組み合わせることで、点数が高ければ大きな文字、「重要」と入力されたら太字など、セルの見た目を自動で変えられます。
この記事では、次の内容を順番に解説します。
- 点数に応じてフォントサイズを変えるコード
- 入力した文字列に応じてスタイルを変えるコード
- セルに入力した直後に自動でスタイルを変える方法
点数に応じてフォントサイズを変えるには?
B列に入力された点数に応じて、フォントサイズを自動で変えるコードです。
Sub ChangeFontSize()
Dim i As Long
Dim val As Variant
For i = 2 To 10
val = Cells(i, 2).Value
' 数値が入っている行だけ処理する
If IsNumeric(val) Then
If val >= 80 Then
Cells(i, 2).Font.Size = 16 ' 80点以上は大きめ
ElseIf val >= 50 Then
Cells(i, 2).Font.Size = 12 ' 50〜79点は標準
Else
Cells(i, 2).Font.Size = 9 ' 50点未満は小さめ
End If
End If
Next i
End Sub
IsNumeric(val) で数値かどうかを確認してから処理することで、空白や文字列が入っているセルでエラーになるのを防いでいます。
入力した文字列に応じてスタイルを変えるには?
「重要」「注意」「不要」などの文字列に応じて、太字・斜体・取り消し線を自動でつけるコードです。複数の条件を切り替えるときは Select Case が読みやすくなります。
Sub ChangeFontStyle()
Dim i As Long
Dim txt As String
For i = 2 To 10
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
セルに入力した直後に自動でスタイルを変えるには?
マクロを手動で実行せずに、セルに入力した瞬間に自動でスタイルを変えたい場合は Worksheet_Change イベントを使います。このコードはシートモジュール(標準モジュールではなく、対象シートのコードウィンドウ)に貼り付けます。
Private Sub Worksheet_Change(ByVal Target As Range)
' B2:B10の範囲が変更されたときだけ処理する
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
コードの流れ
Worksheet_Change:シートのセルが変更されるたびに自動で動くイベントです。Intersect(Target, Range("B2:B10")):変更されたセルがB2:B10の範囲と重なっているかを調べます。重なっていれば処理を実行します。- シートモジュールに貼り付けるには、VBAの編集画面(Alt+F11)で対象シート名をダブルクリックして開いたエリアに貼り付けます。
まとめ
- フォントサイズ:
Font.Size = 数値で変えられる。 - 太字:
Font.Bold = True - 斜体:
Font.Italic = True - 取り消し線:
Font.Strikethrough = True - 自動で変える:
Worksheet_Changeイベントをシートモジュールに書く。
よくある質問
スタイルを一度リセットしてから設定したい場合は?
条件分岐の前に Cells(i, 2).Font.Bold = False のようにスタイルをFalseに戻してからつけ直すと、前回の設定が残らなくなります。複数回マクロを実行する場合はリセット処理を入れておくのがおすすめです。
Select CaseとIf文はどう使い分ける?
同じ変数を複数の値と比較する場合は Select Case の方がすっきり書けます。条件が「〇〇以上・以下」のような範囲の比較の場合は If〜ElseIf の方が向いています。
Worksheet_Changeイベントはどこに書けばいい?
VBAの編集画面(Alt+F11)を開いて、左側のプロジェクトエクスプローラーから対象のシート名(例:Sheet1)をダブルクリックして開いたエリアに貼り付けます。標準モジュールに書いても動かないので注意してください。
複数のセルを一度に変更したときにエラーになる場合は?
コピー&ペーストなどで複数セルを一度に変更すると、Target に複数のセルが入ります。その場合 Target.Value が配列になるためエラーが出ることがあります。対策として If Target.Count > 1 Then Exit Sub をコードの最初に追加すると、複数セルの変更時はスキップできます。
フォントの色も条件で変えることはできる?
できます。Cells(i, 2).Font.Color = RGB(255, 0, 0) のようにRGB関数で色を指定します。フォントサイズやスタイルと組み合わせることで、より視覚的にわかりやすいシートを作れます。
動画で学びたい方へ
「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。
VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。



