MENU

【実務向け】VBAで入力ミスを防ぐ!リアルタイム入力チェックの自動化テクニック

目次

✅ この記事で学べること

  • 入力内容をその場でチェックしてエラーを防止する方法
  • セルに数値・文字列を強制するリアルタイム処理
  • メッセージボックスや色分けで「気づかせる」工夫
  • ワークシート関数では難しい動的チェックのVBA化
A子さん

Excelで、売上金額の列に文字を入れちゃう人がいるのよ…

先輩

「それ、VBAで“リアルタイムでチェック”できるよ。しかも、入力と同時に警告を出すこともできるんだ

入力された値が「数値」かどうかをその場で判定

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C2:C100")) Is Nothing Then
        If Not IsNumeric(Target.Value) And Target.Value <> "" Then
            MsgBox "数値を入力してください", vbExclamation
            Application.EnableEvents = False
            Target.ClearContents
            Application.EnableEvents = True
        End If
    End If
End Sub

🔍 解説

  • 対象はC列(売上金額など)
  • IsNumeric数値以外を検知
  • エラー時はメッセージ+セルをクリア
  • 無限ループ防止に Application.EnableEvents = False を必ず併用

入力ミスが起きやすいセルを色で可視化

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E2:E100")) Is Nothing Then
        If Len(Target.Value) > 10 Then
            Target.Interior.Color = RGB(255, 199, 206) ' 薄い赤
        Else
            Target.Interior.ColorIndex = xlNone
        End If
    End If
End Sub

🔍 こんなときに便利

  • 備考欄など、文字数制限があるフィールド
  • 見落とし防止に、即時で色づけ

入力直後にフォーマット修正(例:日付の統一)

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("D2:D100")) Is Nothing Then
        On Error Resume Next
        Target.Value = Format(Target.Value, "yyyy/mm/dd")
        On Error GoTo 0
    End If
End Sub

🔍 解説

  • 入力直後に自動で日付フォーマットを揃える
  • On Error Resume Next で変換失敗時もスキップ

未入力を検出して警告する(入力完了チェック)

Sub 入力チェック()
    Dim rng As Range
    For Each rng In Range("A2:A50")
        If rng.Value = "" Then
            MsgBox rng.Address & " が未入力です", vbExclamation
            Exit Sub
        End If
    Next
    MsgBox "すべての入力が完了しています!", vbInformation
End Sub

🔍 解説

  • まとめてチェックしたいときは、手動実行用のSubプロシージャ
  • 「空欄があるか」→あればメッセージ→なければ完了通知

✅ まとめ|VBAで「ついうっかり」をなくす仕組みを

処理内容実装方法主な目的
数値チェックWorksheet_Change + IsNumeric金額・数量など
文字数超過Len関数で文字数判定コメント・備考欄など
日付の統一Format関数で即時変換日報・申請フォーム等
未入力警告Subプロシージャで一括判定提出前の確認
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次