【Excelマクロ】各セルの入力文字数をチェックして◯文字以上であれば背景色を変更

入力欄に制限をかけたいとき、「〇文字以上は目立たせたい」と思う場面があります。たとえば、備考欄に長すぎるコメントが入力されていたり、文字数制限を超えている可能性があるときなどです。

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イベント を使えば自動でチェックさせることも可能

「何文字以上か入力されたら見た目で分かるようにしたい」と思ったら、ぜひこのマクロを試してみてください。ちょっとした工夫で、作業ミスを防げる環境を整えることができます。

コメントする

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

上部へスクロール