【ミス激減】VBAでセル入力を自動チェックするエラーチェックマクロの作り方

Excel業務でよくあるのが、「数字が入っているべきセルに文字が…」「必須項目が未入力のまま提出された…」といった人為的なミス。
そんなときに役立つのが VBAで自動化するエラーチェックマクロ です。

この記事では、入力ミスを自動的に検出・通知するVBAの作成方法をわかりやすく解説します。入力ミスを未然に防ぎ、作業品質を飛躍的に向上させましょう!


この記事でわかること

  • セルのエラーチェックを自動化する基本マクロ
  • 未入力・数値ミス・日付ミスなどの具体的なチェック方法
  • エラー箇所をハイライト表示するテクニック
  • メッセージボックスでユーザーに通知する方法

前提:チェック対象のExcelの構成(例)

項目名セル範囲(例)
氏名A2:A100
年齢B2:B100
入社日C2:C100

基本構造:セルをループしてエラーチェックする

Sub CheckInputErrors()
    Dim lastRow As Long
    Dim i As Long
    Dim ws As Worksheet
    Dim errorCount As Long

    Set ws = ThisWorkbook.Sheets("入力シート")
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    errorCount = 0

    ' チェック前にセルの色をリセット
    ws.Range("A2:C" & lastRow).Interior.ColorIndex = xlNone

    For i = 2 To lastRow
        ' 氏名:未入力チェック
        If Trim(ws.Cells(i, "A").Value) = "" Then
            ws.Cells(i, "A").Interior.Color = RGB(255, 200, 200)
            errorCount = errorCount + 1
        End If

        ' 年齢:数値チェック
        If Not IsNumeric(ws.Cells(i, "B").Value) Or ws.Cells(i, "B").Value <= 0 Then
            ws.Cells(i, "B").Interior.Color = RGB(255, 200, 200)
            errorCount = errorCount + 1
        End If

        ' 入社日:日付チェック
        If Not IsDate(ws.Cells(i, "C").Value) Then
            ws.Cells(i, "C").Interior.Color = RGB(255, 200, 200)
            errorCount = errorCount + 1
        End If
    Next i

    ' 結果通知
    If errorCount > 0 Then
        MsgBox errorCount & " 件の入力ミスがあります。赤く表示されたセルを確認してください。", vbExclamation
    Else
        MsgBox "入力ミスはありません!", vbInformation
    End If
End Sub

チェック内容をカスタマイズするには?

チェック項目方法例
数値が範囲外If value < 0 Or value > 100 Then...
必須項目の未入力If Trim(value) = "" Then...
日付が未来If value > Date Then...
' 例:年齢が18歳未満の場合
If ws.Cells(i, "B").Value < 18 Then
    ws.Cells(i, "B").Interior.Color = RGB(255, 255, 100)
    errorCount = errorCount + 1
End If

応用:チェック結果を一覧に出力する方法

Dim resultWs As Worksheet
Set resultWs = ThisWorkbook.Sheets("チェック結果")
resultWs.Cells.ClearContents
Dim r As Long: r = 1

' チェックの中で条件に一致したらログに出力
resultWs.Cells(r, 1).Value = "行番号"
resultWs.Cells(r, 2).Value = "エラー内容"
r = r + 1

If Trim(ws.Cells(i, "A").Value) = "" Then
    resultWs.Cells(r, 1).Value = i
    resultWs.Cells(r, 2).Value = "氏名が未入力"
    r = r + 1
End If

VBAをボタンに登録して誰でも使える形に!

  1. Excelの「開発」タブ → 「挿入」→「ボタン(フォームコントロール)」
  2. ボタンを配置し、「CheckInputErrors」マクロを割り当て
  3. 初心者でもワンクリックでチェック実行!

まとめ

ポイント内容
ミスを減らすには?VBAでセルの自動チェック
チェック内容は?未入力・数値誤り・日付誤りなど
見やすさエラーセルを色付け or 結果一覧出力
誰でも使える形にするには?ボタンと組み合わせるのが効果的
タイトルとURLをコピーしました