Home » ExcelVBA Rangeオブジェクト » 入力規則・Validation » 入力規則が設定されているかを調べるExcelマクロ

入力規則が設定されているかを調べるExcelマクロ

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

条件付き書式が設定されているかどうかを調べるExcelマクロをご紹介しました。

似たような件で、入力規則が設定されているかどうかを調べたい、という要望もあるようです。

入力規則が設定されているかを調べるExcelマクロ

このサイト・インストラクターのネタ帳のアクセスログでも、
「excelvba 入力規則 設定有無」
「excel vba 入力規則設定の有無」
といった検索キーワードが見られます。

[スポンサードリンク]

入力規則が設定されているかどうかをサンプルマクロ

以下のようなSubプロシージャで、アクティブなワークシートに入力規則が設定されているかどうかを調べられます。

Sub アクティブシートに入力規則が設定されているかを調べる()
 Dim rng As Range

 On Error Resume Next
 Set rng = Cells.SpecialCells(xlCellTypeAllValidation)
 On Error GoTo 0

 If rng Is Nothing Then
  MsgBox "アクティブシートに入力規則は設定されていません。"
 Else
  rng.Select
  MsgBox "選択されているセルに、入力規則が設定されています。"
 End If
End Sub

サンプルマクロの解説

[選択オプション]ダイアログで[データの入力規則]-[すべて]オプションを選択すると、

入力規則が設定されているかを調べるExcelマクロ

入力規則の設定されているセルだけを選択できます。

この操作をマクロ記録すると、
  ActiveCell.SpecialCells(xlCellTypeAllValidation).Select
というコードができます。
このコードを流用して作ったのが上記のSubプロシージャです。

Range.SpecitalCellsメソッドの引数に、

入力規則が設定されているかを調べるExcelマクロ

定数・xlCellTypeAllValidationを指定することで、

入力規則が設定されているかを調べるExcelマクロ

入力規則の設定されているセルを取得して、オブジェクト変数・rngにセットするようにしています。
  Set rng = Cells.SpecialCells(xlCellTypeAllValidation)

入力規則の設定されているセルがなかったときには、
  Set rng = Cells.SpecialCells(xlCellTypeAllValidation)
で実行時エラーが発生しまいますから、事前に
  On Error Resume Next
としています。

オブジェクト変数・rngにセットする、
  Set rng = Cells.SpecialCells(xlCellTypeAllValidation)
が実行されたあと、オブジェクト変数の初期値・Nothingのままなら、入力規則が設定されているセルは存在しないと判断できます。
 If rng Is Nothing Then
  MsgBox "入力規則は設定されていません。"

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » 入力規則・Validation » 入力規則が設定されているかを調べるExcelマクロ

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

検索


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

.