このサイト・インストラクターのネタ帳のアクセスログを眺めていて、
「vbaセル入力規則か設定されているか」
という検索に気づきました。
既に、アクティブなワークシートに、入力規則が設定されているかどうかを調べるExcelマクロをご紹介しています。
そのセル限定版を探していらしたのでしょう。
アクティブセルに入力規則が設定されているか判定するサンプルマクロ
調べたいセルが1個なのか、複数なのかによって実際の作りは変わってくると思いますが、参考になりそうな、アクティブセルに入力規則が設定されているかを調べるマクロをご紹介しておきます。
On Error Resume Next
Dim tmp
tmp = ActiveCell.Validation.Type If Err.Number <> 0 Then
MsgBox "アクティブセルに入力規則は設定されていません。"
Else
MsgBox "アクティブセルに入力規則が設定されています!"
End If
On Error GoTo 0
End Sub
サンプルマクロの解説
RangeオブジェクトのValidationプロパティが、入力規則が設定されていないときにNothingを返すのであれば、ご紹介済みのワークシート版と同じ作りにできるのですが、そうではないため上記のようなプロシージャにしました。
Validationオブジェクトのいずれかのプロパティを取得しようとして、入力規則が設定されていなければ、実行時エラーが発生します。
そこで、
On Error Resume Next
としておいて、(どのプロパティでもよかったのですが)Validation.Typeプロパティを取得して、
Dim tmp
tmp = ActiveCell.Validation.Type
としています。
このときに、入力規則が設定されていなければ実行時エラーが発生するので、
If Err.Number <> 0 Then
MsgBox "アクティブセルに入力規則は設定されていません。"
と判定しています。
On Error GoTo文を使ったサンプルマクロ
On Error GoToステートメントを使う場合は、以下のようなSubプロシージャです。On Error GoTo ErrHndl
Dim tmp
tmp = ActiveCell.Validation.Type
MsgBox "アクティブセルに入力規則が設定されています!"
Exit Sub
ErrHndl:
Err.Clear
MsgBox "アクティブセルに入力規則は設定されていません。"
End Sub
Home » Excel VBA Rangeオブジェクト » 入力規則・Validation » アクティブセルに入力規則が設定されているか判定するExcelマクロ