ミスを見逃さないために
Excelで集計や入力をしていると、ついうっかりの「入力ミス」が後の業務に影響することがあります。
たとえば、次のようなケースです。
- 入力すべきセルが空白のままになっている
- 数値の列に文字が入っている
- 特定の形式(例:yyyy/mm/dd)で入力されていない
人の目ではすぐに見つからないような入力ミスも、マクロで事前にチェックすることで防止できます。
空白セルや形式ミスを検出するマクロ
コード例
Sub CheckInputError()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim msg As String
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
msg = ""
For i = 2 To lastRow
' 氏名(A列)が空白
If ws.Cells(i, 1).Value = "" Then
msg = msg & i & "行目の氏名が空白です。" & vbCrLf
End If
' 年齢(B列)が数値でない
If Not IsNumeric(ws.Cells(i, 2).Value) Then
msg = msg & i & "行目の年齢が数値ではありません。" & vbCrLf
End If
' 日付(C列)が正しい日付でない
If Not IsDate(ws.Cells(i, 3).Value) Then
msg = msg & i & "行目の日付が不正です。" & vbCrLf
End If
Next i
If msg <> "" Then
MsgBox "入力ミスが見つかりました:" & vbCrLf & msg, vbExclamation
Else
MsgBox "入力ミスは見つかりませんでした。", vbInformation
End If
End Sub
解説
Cells(i, 1)で行と列を指定し、列Aを参照します。IsNumericやIsDateを使って、数値や日付の形式をチェックします。- 入力エラーがあれば
MsgBoxで一覧表示されます。
エラー検出マクロを使うメリット
このようなチェックマクロを導入することで、次のようなメリットがあります。
主なメリット
- 入力者のうっかりミスを事前に防止できる
- 作業後のミス確認が不要になり、業務効率が向上
- データの整合性が保たれ、集計・分析が正確になる
- ルール違反のデータがある場合に即座に発見できる
応用:特定列だけを対象にする場合
たとえば、「年齢」の列だけをチェックしたい場合は、次のように記述を簡略化できます。
Sub CheckAgeOnly()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, 2).End(xlUp).Row ' B列基準
For i = 2 To lastRow
If Not IsNumeric(ws.Cells(i, 2).Value) Then
MsgBox i & "行目の年齢が数値ではありません。", vbExclamation
Exit Sub
End If
Next i
MsgBox "すべての年齢が正しく入力されています。", vbInformation
End Sub
このように、必要に応じて範囲や項目を限定できるのがVBAの魅力です。
まとめ
入力ミスのチェックは、業務の正確さを支える大切なステップです。
マクロを使えば、目視では見つけづらい誤入力も即座に検出できます。
ポイントをまとめておきます。
Cellsを使えば行列を柔軟に指定できるIsNumericやIsDateで形式チェックが可能- エラーを見つけたら
MsgBoxで表示すれば見逃さない - 作業の信頼性が向上し、後工程もスムーズになる
「確認作業に時間をかけたくない」「ミスを自動で防ぎたい」
そんな方は、ぜひこのマクロを活用してみてください。
