アプリ版:「スタンプのみでお礼する」機能のリリースについて

excelでデータを入力した後、
マクロでデータの入力内容をチェックしたいと思います。

まず、マクロで入力規則を設定した後、
CircleInvalidで入力エラー箇所を表示するようにして、
エラーがある場合はその後の処理を中断させたいのです。

その、エラーがある場合の判定方法が分かりません。
1セルごとであれば、Validation.Valueがtrueかfalseかで判断できることは分かったのですが、
アクティブシートで一気に判断する方法をお知りの方があれば、
ぜひ、ご教授ください。

よろしくお願いいたします。

A 回答 (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
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

セル範囲をsetして、その全セルで判定することも考えていたので、
回答の内容は、欲しい情報そのものでした。

SpecialCells(xlCellTypeAllValidation)
という入力規則設定セルの指定方法があるとは知りませんでした。

単純に、適当なセル領域をsetしようとしていたので、
SpecialCells(xlCellTypeAllValidation)
は相当便利に使えそうです。

本当にありがとうございました。

お礼日時:2009/07/03 23:24

VBAのヘルプよりコピー(実際に確認はしていません)



<使用例>
次の使用例は、ワークシート 1 で入力規則の制限外の値が入力されているセルに丸印を付けます。
Worksheets(1).CircleInvalid
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!