こちらに「入力チェック結果を一覧表にまとめるマクロ集」をご紹介します。
セルを色付けするだけでなく、別シートに「どの行・どの列で・どんなエラーがあったか」を一覧化することで、後から確認・修正がしやすくなります。
サンプル1:未入力・数値・日付チェック結果を一覧化
Sub CheckAndReport()
Dim ws As Worksheet, wsReport As Worksheet
Dim lastRow As Long, i As Long, reportRow As Long
Set ws = Sheets("入力シート")
On Error Resume Next
Set wsReport = Sheets("チェック結果")
If wsReport Is Nothing Then
Set wsReport = Sheets.Add
wsReport.Name = "チェック結果"
End If
On Error GoTo 0
wsReport.Cells.Clear
wsReport.Range("A1:C1").Value = Array("行番号", "列名", "エラー内容")
reportRow = 2
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
For i = 2 To lastRow
' A列:必須
If Trim(ws.Cells(i, 1).Value) = "" Then
wsReport.Cells(reportRow, 1).Value = i
wsReport.Cells(reportRow, 2).Value = "A列"
wsReport.Cells(reportRow, 3).Value = "未入力"
reportRow = reportRow + 1
End If
' B列:数値
If Not IsNumeric(ws.Cells(i, 2).Value) Then
wsReport.Cells(reportRow, 1).Value = i
wsReport.Cells(reportRow, 2).Value = "B列"
wsReport.Cells(reportRow, 3).Value = "数値でない"
reportRow = reportRow + 1
End If
' C列:日付
If Not IsDate(ws.Cells(i, 3).Value) Then
wsReport.Cells(reportRow, 1).Value = i
wsReport.Cells(reportRow, 2).Value = "C列"
wsReport.Cells(reportRow, 3).Value = "日付でない"
reportRow = reportRow + 1
End If
Next i
MsgBox "チェック完了。結果は「チェック結果」シートに出力しました。"
End Sub
VBサンプル2:文字数制限チェックを追加
Sub CheckLengthAndReport()
Dim ws As Worksheet, wsReport As Worksheet
Dim lastRow As Long, i As Long, reportRow As Long
Set ws = Sheets("入力シート")
Set wsReport = Sheets("チェック結果")
reportRow = wsReport.Cells(wsReport.Rows.Count, 1).End(xlUp).Row + 1
lastRow = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row
For i = 2 To lastRow
If Len(ws.Cells(i, 4).Value) > 10 Then
wsReport.Cells(reportRow, 1).Value = i
wsReport.Cells(reportRow, 2).Value = "D列"
wsReport.Cells(reportRow, 3).Value = "文字数超過"
reportRow = reportRow + 1
End If
Next i
End Sub
VBサンプル3:エラー件数を集計
Sub SummarizeErrors()
Dim wsReport As Worksheet
Dim lastRow As Long
Set wsReport = Sheets("チェック結果")
lastRow = wsReport.Cells(wsReport.Rows.Count, 1).End(xlUp).Row
wsReport.Cells(1, 5).Value = "エラー件数"
wsReport.Cells(2, 5).Value = lastRow - 1
End Sub
VB✅ まとめ
- チェック結果を「チェック結果」シートに一覧化 → 修正が容易
- 行番号・列名・エラー内容を記録 → どこを直せばよいか一目でわかる
- 件数集計を加えれば、全体のエラー状況を把握可能
💡 この仕組みを応用すれば、エラー種別ごとに色分けした集計表や、担当者別のエラー一覧を自動生成することもできます。


