入力規則に違反したセルの件数と位置をVBAで取得・可視化する方法

Excelで入力規則(データバリデーション)を設定しているにもかかわらず、ユーザーが手動で貼り付けを行うなどして、規則に違反したデータが混入してしまうケースは少なくありません。
本記事では、VBAを使って「入力規則に違反したセルの数と位置を取得し、視覚的に把握する」方法をご紹介いたします。

目次

想定する状況と目的

  • 入力規則が設定された範囲に、手動入力や貼り付けによって不正なデータが混入している。
  • それらのセルを検出し、件数を表示したい。
  • 違反セルを自動で目立たせて、後から修正しやすくしたい。

VBAコードの紹介

以下のコードを使用することで、不正データの件数と位置を自動的に検出し、対象のセルに赤色の塗りつぶしを適用できます。

Sub CheckInvalidEntries()

    Dim initialShapeCount As Long
    initialShapeCount = ActiveSheet.Shapes.Count
    
    ' 不正セルの強調表示処理(CircleInvalid などの自作プロシージャを呼び出す想定)
    ActiveSheet.HighlightInvalidCells
    
    ' 表示用メッセージ(図形が追加されている場合を想定)
    If initialShapeCount <> ActiveSheet.Shapes.Count Then
        DoEvents
        MsgBox "入力規則に違反しているデータの件数:" & _
               ActiveSheet.Shapes.Count - initialShapeCount & " 件です。", vbInformation
    End If
    
    ' 入力規則が設定されているセルを調べる
    Dim cell As Range
    On Error Resume Next ' 入力規則が無い場合のエラー回避
    For Each cell In ActiveSheet.Cells.SpecialCells(xlCellTypeAllValidation)
        If cell.Validation.Value = False Then
            cell.Interior.Color = RGB(255, 200, 200) ' 淡い赤で目立たせる
        End If
    Next
    On Error GoTo 0
    
End Sub

コードの補足説明

HighlightInvalidCellsプロシージャについて

この部分は、たとえば「○」を表示する処理や、対象セルに図形を重ねる処理などを別途実装して呼び出す想定です。もしそのような機能を使用しない場合は、該当行を削除して構いません。

SpecialCells(xlCellTypeAllValidation)の活用

この指定により、「入力規則が設定されているすべてのセル」を一括で取得できます。そこから、Validation.Valueで実際に規則を満たしているかどうかを判定しています。


応用例:エラー修正作業の効率化

このコードを使えば、例えば毎月提出される報告書テンプレートにおいて、入力ミスのチェック作業を大幅に短縮できます。
塗りつぶされたセルだけを後から見て修正できるため、作業効率の向上に役立ちます。


まとめ

Excelの入力規則は、ユーザーの誤操作を防ぐ強力な機能ですが、完全に防げるわけではありません。
特にコピー&ペーストによるデータ入力では、規則が無効化されることがあります。
本記事でご紹介したVBAコードを活用することで、不正データの検出と可視化が可能になり、修正作業の漏れを防ぐことができます。

手作業によるチェックでは見逃してしまうような小さな違反データも、VBAによる自動化で確実に見つけ出すことができるため、日々の業務効率化に大いに役立つでしょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次