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

Excel VBA VBA
スポンサーリンク

郵便番号が「未入力 or 桁数不正」な人を元シートで色付けするマクロ

これまでの「未入力/不正チェック」をさらに発展させて、別シートにリストアップするだけでなく、元の住所録シート上でエラーのあるセルを色付けするバージョンです。
これにより、元データを直接見ながら修正できるようになります。


マクロコード例

Sub 郵便番号チェック_色付け()
    Dim lastRow As Long
    Dim i As Long
    Dim ws As Worksheet
    Dim zipCode As String
    
    ' 元データのシートを設定(例: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
    
    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)
        ElseIf Len(zipCode) <> 7 Or Not IsNumeric(zipCode) Then
            ' 桁数不正 or 数字以外 → 黄色
            ws.Cells(i, "B").Interior.Color = RGB(255, 255, 150)
        End If
    Next i
    
    MsgBox "郵便番号のチェックが完了しました。未入力は赤、不正は黄色で表示しました。", vbInformation
End Sub
VB

コードのポイント

  • 色付けルール
    • 未入力 → 赤色(RGB(255,200,200)
    • 桁数不正/数字以外 → 黄色(RGB(255,255,150)
  • 既存の色をクリアしてから再チェックするので、修正後に再実行すれば色が消える。
  • Trim+Replace で空白やハイフンを除去してから判定。

実行後のイメージ(元シート)

  • 郵便番号が空欄のセル → 赤色で強調
  • 郵便番号が「12345」や「12A4567」など不正 → 黄色で強調
  • 正常な郵便番号(7桁数字 or 123-4567形式) → 色なし

応用アイデア

  • 氏名セルも一緒に色付けして、誰のデータか一目でわかるようにする。
  • 正常な郵便番号は自動で「123-4567」形式に整形する処理を追加。
  • エラー件数をカウントして、メッセージボックスで報告。
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました