Home » ExcelVBA Rangeオブジェクト » 入力規則・Validation » 入力規則のリスト項目を取得するExcelマクロ

入力規則のリスト項目を取得するExcelマクロ

対象:Excel2002, Excel2003, Excel2007, Excel2010

入力規則を設定して、ドロップダウンリストから選択してデータ入力できるようにするTipsは、業務用ワークシートを作成している方にとても人気があります。

この入力規則のリストを利用している方から、
「リストに設定してある項目を調べる方法はないのでしょうか」
といったご相談をいただくことがあります。

[データの入力規則]ダイアログで、リストにどのような値が設定されているのかを知るためには、[データの入力規則]ダイアログを表示して確認する必要があります。

しかし、入力規則の設定されているセルが大量に存在する場合、いちいち[データの入力規則]ダイアログを表示して確認するというのは、かなり面倒な作業です。

[スポンサードリンク]

入力規則のリスト項目を取得するサンプルマクロ

VBA(Visual Basic for Applications)で、マクロを作成すれば、入力規則のリストでどのような項目が設定されているかを調べるのは簡単です。

Sub 入力規則のリスト項目を取得する()

 Dim rng As Range

 On Error Resume Next

 For Each rng In Cells.SpecialCells(xlCellTypeAllValidation)
 With rng

  If .Validation.Type = xlValidateList Then
   Debug.Print _
    .Address(False, False) & vbTab & _
    .Validation.Formula1
  End If
 
 End With
 Next

End Sub

上記のマクロを実行すると、入力規則の設定されているセルのアドレスとリスト項目が、VBE(Visual Basic Editor)のイミディエイトウィンドウに出力されます。

サンプルマクロの解説

アクティブシートの全セルを表すRangeオブジェクトをCellsプロパティで取得して、RangeオブジェクトのSpecialCellsプロパティに定数・xlCellTypeAllValidationを指定することで、入力規則の設定されているセルを表すRangeオブジェクト取得して、そのRangeオブジェクトに対してループを回します。
 For Each rng In Cells.SpecialCells(xlCellTypeAllValidation)
 With rng

もしも入力規則のリストが設定されていたときに、
  If .Validation.Type = xlValidateList Then

そのセルアドレスと、リスト項目をDebug.Printしています。
   Debug.Print _
    .Address(False, False) & vbTab & _
    .Validation.Formula1

入力規則の設定されているセルが1つも存在しないときにエラーとなるのを防ぐため、事前に、
 On Error Resume Next
としています。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » 入力規則・Validation » 入力規則のリスト項目を取得するExcelマクロ

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

検索


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

.