入力欄に制限をかけたいとき、「〇文字以上は目立たせたい」と思う場面があります。たとえば、備考欄に長すぎるコメントが入力されていたり、文字数制限を超えている可能性があるときなどです。
Excelの条件付き書式でもある程度は対応できますが、VBAを使えばより柔軟でスピーディに制御できます。
今回は、「あるセル範囲の各セルについて、指定文字数以上なら背景色を変更するマクロ」を紹介します。
文字数チェックと背景色変更のマクロ
次のコードは、「A列の2行目から100行目まで」について、20文字以上のセルの背景を黄色に塗る処理です。
' 各セルの文字数をチェックし、20文字以上なら黄色に塗る
Dim i As Long
Dim txt As String
For i = 2 To 100
txt = Cells(i, 1).Value
If Len(txt) >= 20 Then
Cells(i, 1).Interior.Color = RGB(255, 255, 0) ' 黄色
Else
Cells(i, 1).Interior.ColorIndex = xlNone ' 背景を戻す
End If
Next
このマクロは、対象セルの文字数を Len 関数でチェックし、20文字以上であれば黄色に、そうでなければ元に戻します。
対象範囲や色、文字数は簡単に変更できるので、用途に応じたカスタマイズも可能です。
実装するメリット
この処理をVBAで組み込むことには、次のようなメリットがあります。
- 入力チェックのミスを防げる(長すぎる文章の見落としを防止)
- 条件付き書式よりも柔軟な制御が可能
- 一度書けば他のシートにも使い回せる
- フォーム入力や申請書の作成時に使える
特に業務上で「内容が長すぎると印刷がはみ出す」や「ツール入力時の制限がある」ようなケースでは、このようなチェックは非常に有効です。
入力後に自動で実行する例(ワークシートイベント)
上記のマクロをボタンで実行するのではなく、セルに入力された瞬間に自動で実行させることも可能です。次のように、ワークシートのChangeイベントに組み込むと便利です。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:A100")) Is Nothing Then
If Len(Target.Value) >= 20 Then
Target.Interior.Color = RGB(255, 255, 0)
Else
Target.Interior.ColorIndex = xlNone
End If
End If
End Sub
このコードは、対象範囲(A2:A100)に変更があった場合、20文字以上なら黄色に塗る、そうでなければ背景をクリアする、という処理です。
ユーザーが意識せずとも、リアルタイムに文字数チェックと警告表示が行われるため、誤入力を未然に防げます。
まとめ
入力文字数のチェックと背景色による視覚的な警告は、簡単なようで実務ではとても有効です。VBAを使えば、柔軟に・効率的に・目立たせたい条件に応じて対応できます。
ポイントをまとめます。
Len関数を使えば文字数の取得が簡単にできる- 条件に応じて
Interior.Colorで背景色を変更できる Changeイベントを使えば自動でチェックさせることも可能
「何文字以上か入力されたら見た目で分かるようにしたい」と思ったら、ぜひこのマクロを試してみてください。ちょっとした工夫で、作業ミスを防げる環境を整えることができます。


