Excel VBA | Excel VBAで作る「住所録の自動整形マクロ」

Excel VBA VBA
スポンサーリンク

郵便番号チェック+エラー件数をカウントして表示するマクロ

これまでの「未入力/不正チェック+色付け」に、エラー件数をカウントしてメッセージで報告する機能を追加しました。
これで「未入力が何件、不正が何件あるか」を一目で把握できます。


マクロコード例

Sub 郵便番号チェック_件数表示()
    Dim lastRow As Long
    Dim i As Long
    Dim ws As Worksheet
    Dim zipCode As String
    Dim cntEmpty As Long, cntInvalid As Long
    
    ' 元データのシートを設定(例:Sheet1)
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' A列:氏名, B列:郵便番号 と仮定
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' まず既存の色をクリア
    ws.Range("B2:B" & lastRow).Interior.ColorIndex = xlNone
    
    ' カウンタ初期化
    cntEmpty = 0
    cntInvalid = 0
    
    For i = 2 To lastRow ' 1行目は見出しと仮定
        zipCode = Trim(ws.Cells(i, "B").Value)
        zipCode = Replace(zipCode, "-", "") ' ハイフンを除去
        
        If zipCode = "" Then
            ' 未入力 → 赤色
            ws.Cells(i, "B").Interior.Color = RGB(255, 200, 200)
            cntEmpty = cntEmpty + 1
        ElseIf Len(zipCode) <> 7 Or Not IsNumeric(zipCode) Then
            ' 桁数不正 or 数字以外 → 黄色
            ws.Cells(i, "B").Interior.Color = RGB(255, 255, 150)
            cntInvalid = cntInvalid + 1
        End If
    Next i
    
    ' 結果を表示
    MsgBox "郵便番号チェック完了" & vbCrLf & _
           "未入力: " & cntEmpty & " 件" & vbCrLf & _
           "不正: " & cntInvalid & " 件", vbInformation
End Sub
VB

コードのポイント

  • cntEmpty / cntInvalid で件数をカウント。
  • 色付けルール
    • 未入力 → 赤色
    • 桁数不正/数字以外 → 黄色
  • MsgBox で件数をまとめて表示。

実行後のイメージ(メッセージボックス)

郵便番号チェック完了
未入力: 3 件
不正: 2 件

応用アイデア

  • 正常件数も表示して「全体のうち何件が正常か」を出す。
  • エラー件数が0なら「全件正常」と表示する。
  • エラー件数を別セルに書き出して、管理表として残す。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました