入力規則を設定して、ドロップダウンリストから選択してデータ入力できるようにするTipsは、業務用ワークシートを作成している方にとても人気があります。
この入力規則のリストを利用している方から、
「リストに設定してある項目を調べる方法はないのでしょうか」
といったご相談をいただくことがあります。
[データの入力規則]ダイアログで、リストにどのような値が設定されているのかを知るためには、[データの入力規則]ダイアログを表示して確認する必要があります。
しかし、入力規則の設定されているセルが大量に存在する場合、いちいち[データの入力規則]ダイアログを表示して確認するというのは、かなり面倒な作業です。
入力規則のリスト項目を取得するサンプルマクロ
VBA(Visual Basic for Applications)で、マクロを作成すれば、入力規則のリストでどのような項目が設定されているかを調べるのは簡単です。
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
上記のマクロを実行すると、入力規則の設定されているセルのアドレスとリスト項目が、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
としています。
- Newer:段落の選択範囲を自動的に調整するはどこ?
- Older:リボンを小さくする・折りたたむ方法
Home » Excel VBA Rangeオブジェクト » 入力規則・Validation » 入力規則のリスト項目を取得するExcelマクロ