【エクセルマクロ】入力規則の違反チェック:使用例3選

ExcelVBA-入力規則違反チェック-アイキャッチ ExcelVBA

エクセルマクロで、入力規則の違反をチェックする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選
...

 

「プログラマーの本気がExcelを覚醒させる 超絶ExcelVBA」
ExcelVBAでワンランクアップできる書籍
具体的で応用が利く技をたくさん掲載