• ベストアンサー

無効データの有無

excelでデータを入力した後、 マクロでデータの入力内容をチェックしたいと思います。 まず、マクロで入力規則を設定した後、 CircleInvalidで入力エラー箇所を表示するようにして、 エラーがある場合はその後の処理を中断させたいのです。 その、エラーがある場合の判定方法が分かりません。 1セルごとであれば、Validation.Valueがtrueかfalseかで判断できることは分かったのですが、 アクティブシートで一気に判断する方法をお知りの方があれば、 ぜひ、ご教授ください。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

CircleInvalid でついた赤丸の数がカウント出来ればよいのですが、不可能なように思えます。 入力規則があるセルでループを回して、Validation.Valueで確認するしか無いのではないでしょうか。 Sub Sample() Dim rDV As Range Dim rCell As Range Dim nFlg As Long Dim ws As Worksheet Set ws = ActiveSheet '*** 入力規則があるセルでループを回す Set rDV = ws.Cells.SpecialCells(xlCellTypeAllValidation) nFlg = 0 For Each rCell In rDV   '*** 規則を満たしている:True/満たしていない:False   If rCell.Validation.Value = False Then     '*** 満たして居ないセルがあった     ActiveSheet.CircleInvalid     nFlg = 1     Exit For 'エラーが1つでもあったらループを抜ける   End If Next '*** エラーのセルが有った場合 If nFlg = 1 Then   MsgBox ("エラー有り") Exit Sub End Sub

ferc
質問者

お礼

ご回答ありがとうございます。 セル範囲をsetして、その全セルで判定することも考えていたので、 回答の内容は、欲しい情報そのものでした。 SpecialCells(xlCellTypeAllValidation) という入力規則設定セルの指定方法があるとは知りませんでした。 単純に、適当なセル領域をsetしようとしていたので、 SpecialCells(xlCellTypeAllValidation) は相当便利に使えそうです。 本当にありがとうございました。

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

VBAのヘルプよりコピー(実際に確認はしていません) <使用例> 次の使用例は、ワークシート 1 で入力規則の制限外の値が入力されているセルに丸印を付けます。 Worksheets(1).CircleInvalid

関連するQ&A