エクセルマクロで、入力規則の違反をチェックする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でワンランクアップできる書籍
具体的で応用が利く技をたくさん掲載
リンク