Home » ExcelVBA Rangeオブジェクト » 入力規則・Validation » アクティブセルに入力規則が設定されているか判定するExcelマクロ

アクティブセルに入力規則が設定されているか判定するExcelマクロ

対象:Excel2010, Excel2013, Windows版Excel2016

アクティブセルに入力規則が設定されているか判定するExcelマクロ

このサイト・インストラクターのネタ帳のアクセスログを眺めていて、
「vbaセル入力規則か設定されているか」
という検索に気づきました。

既に、アクティブなワークシートに、入力規則が設定されているかどうかを調べるExcelマクロをご紹介しています。

[スポンサードリンク]

そのセル限定版を探していらしたのでしょう。

アクティブセルに入力規則が設定されているか判定するサンプルマクロ

調べたいセルが1個なのか、複数なのかによって実際の作りは変わってくると思いますが、参考になりそうな、アクティブセルに入力規則が設定されているかを調べるマクロをご紹介しておきます。

Sub アクティブセルに入力規則が設定されているか判定する()
 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プロシージャです。
Sub アクティブセルに入力規則が設定されているかどうか判定する2()
 On Error GoTo ErrHndl
 Dim tmp
 tmp = ActiveCell.Validation.Type
 MsgBox "アクティブセルに入力規則が設定されています!"
 Exit Sub
 
ErrHndl:
 Err.Clear
 MsgBox "アクティブセルに入力規則は設定されていません。"
End Sub

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » 入力規則・Validation » アクティブセルに入力規則が設定されているか判定するExcelマクロ

「入力規則・Validation」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.