エクセルマクロで、入力規則の違反をチェックするVBAコードをご紹介します。
入力済みのデータについて、入力規則に違反しているかどうかを判定します。
このページのマクロコードは、コピペで使えます。
 ぜひお試しください!
入力規則の違反チェック
以下のExcelVBAを実行すると、リスト以外のデータがあるかどうか確認します。
Sub 入力規則の規則違反チェック()
Dim i As Long
Dim j As Long
Dim tmp As Variant
Dim Check As Long
    
    'A2から最終行までループ
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    
        '入力規則リスト内容を取得
        If Cells(i, 1).Validation.Type = xlValidateList Then
            tmp = Split(Cells(i, 1).Validation.Formula1, ",")
        End If
        
        Check = 1
    
        '入力規則リストをループ
        For j = 0 To UBound(tmp)
        
            'A列の値がリストに存在するかチェック
            If Cells(i, 1) = tmp(j) Then
                Check = 0
                Exit For
            End If
       
        Next j
    
         'A列の値がリストに存在しない場合
        If Check = 1 Then
            Cells(i, 2) = "×"
        End If
    
    Next i
End Sub
マクロ実行前
セル範囲 [A2:A6] に入力規則(リスト)を設定しています。

  
マクロ実行後
入力規則「元の値」に存在しない値がある場合、B列に「×」を表示します。
思わぬデータが入り込んでいないか簡単にチェックできます。

  
  
入力規則の違反チェック(メッセージボックス表示)
以下のExcelVBAを実行すると、リストの違反を確認してメッセージボックスに表示します。
Sub 入力規則のチェックをする()
Dim i As Long
Dim j As Long
Dim Tmp As Variant
Dim Target As Variant
Dim Check As Long
    'A2から最終行までループ
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        '入力規則リスト内容を取得
        If Cells(i, 1).Validation.Type = xlValidateList Then
            Tmp = Split(Cells(i, 1).Validation.Formula1, ",")
        End If
        Check = 1
        '入力規則リストをループ
        For j = 0 To UBound(Tmp)
            'A列の値がリストに存在するかチェック
            If Cells(i, 1) = Tmp(j) Then
                Check = 0
                Exit For
            End If
        Next j
         'A列の値がリストに存在しない場合
        If Check = 1 Then
            Target = Target & Cells(i, 1) & vbCrLf
        End If
    Next i
    
    'メッセージボックス表示
    If Target <> "" Then
        MsgBox "【入力規則の違反あり】" & vbCrLf & Target
    End If
End Sub
マクロ実行前
セル範囲 [A2:A6] に入力規則(リスト)を設定しています。

  
マクロ実行後
入力規則「元の値」に存在しない値がある場合、
メッセージボックスで結果を表示します。

  
  
入力規則の違反チェック(色付け)
以下のExcelVBAを実行すると、規則違反を検知してセルを塗りつぶします。
Sub 入力規則をチェックし色を塗る()
Dim i As Long
Dim j As Long
Dim Q As Long
Dim Tmp As Variant
Dim Target As Variant
Dim Check As Long
    '縦ループ
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    
        '横ループ
        For j = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
            '入力規則リスト内容を取得
            If Cells(i, j).Validation.Type = xlValidateList Then
                Tmp = Split(Cells(i, j).Validation.Formula1, ",")
            End If
    
            Check = 1
    
            '入力規則リストをループ
            For Q = 0 To UBound(Tmp)
    
                '値が入力規則に存在するかチェック
                If Cells(i, j) = Tmp(Q) Then
                    Check = 0
                    Exit For
                End If
            Next Q
    
             '値が入力規則に存在しない場合、背景色を着色
            If Check = 1 Then
                Cells(i, j).Interior.Color = 65535
            End If
        
        Next j
    Next i
End Sub
マクロ実行前
セル範囲 [A1:D10] に入力規則(リスト)を設定しています。

  
マクロ実行後
入力規則「元の値」に存在しない値がある場合、セルを着色します。
入力規則に合ったデータが入力されているかチェックします。

  
  
 この記事がお役に立ちますと幸いです。
  
 ・【エクセルマクロ】入力規則を自動処理する方法まとめ
  

【エクセルマクロ】入力規則を自動操作する:超便利5選
エクセルマクロで、入力規則を自動で操作するVBAコードをご紹介します。どのマクロコードも、コピペで使用できます。ぜひお試しください!
「プログラマーの本気がExcelを覚醒させる 超絶ExcelVBA」
 ExcelVBAでワンランクアップできる書籍
 具体的で応用が利く技をたくさん掲載
 
 
リンク