- ベストアンサー
無効データの有無
excelでデータを入力した後、 マクロでデータの入力内容をチェックしたいと思います。 まず、マクロで入力規則を設定した後、 CircleInvalidで入力エラー箇所を表示するようにして、 エラーがある場合はその後の処理を中断させたいのです。 その、エラーがある場合の判定方法が分かりません。 1セルごとであれば、Validation.Valueがtrueかfalseかで判断できることは分かったのですが、 アクティブシートで一気に判断する方法をお知りの方があれば、 ぜひ、ご教授ください。 よろしくお願いいたします。
- みんなの回答 (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
その他の回答 (1)
- fujillin
- ベストアンサー率61% (1594/2576)
VBAのヘルプよりコピー(実際に確認はしていません) <使用例> 次の使用例は、ワークシート 1 で入力規則の制限外の値が入力されているセルに丸印を付けます。 Worksheets(1).CircleInvalid
お礼
ご回答ありがとうございます。 セル範囲をsetして、その全セルで判定することも考えていたので、 回答の内容は、欲しい情報そのものでした。 SpecialCells(xlCellTypeAllValidation) という入力規則設定セルの指定方法があるとは知りませんでした。 単純に、適当なセル領域をsetしようとしていたので、 SpecialCells(xlCellTypeAllValidation) は相当便利に使えそうです。 本当にありがとうございました。