Excelではユーザー設定リストに登録をすることで、ユーザーが設定した順序で、データの並べ替えや入力を行うことができるようになります。
大量のユーザー設定リストを定義しているときに、ユーザー設定リストをワークシート上に書き出すような機能が欲しくなります。
Dim list_items As Variant
Dim list_n As Long ' ユーザー設定リストの数
Dim item_n As Long ' ユーザー設定リストに登録されている項目数
Worksheets.Add Before:=Sheets(1)
For list_n = 1 To Application.CustomListCount
list_items = Application.GetCustomListContents(list_n)
For item_n = 1 To UBound(list_items)
Cells(item_n, list_n).Value = list_items(item_n)
Next item_n
Next list_n
End Sub
上記のマクロを実行すると、アクティブなブックの先頭にワークシートが追加され、元々Excelで定義されているリストも含めて、ユーザー設定リストが書き出されます。
Application.CustomListCountプロパティでユーザー設定リストの数を取得できるので、ユーザー設定リストの数だけループ処理を実行します。
For list_n = 1 To Application.CustomListCount
ユーザー設定リストの項目はApplication.GetCustomListContentsメソッドで取得できるので、Variant型の変数・list_itemsに配列として格納して、
list_items = Application.GetCustomListContents(list_n)
リスト項目の数だけループを回して順番に書き出しています。
For item_n = 1 To UBound(list_items)
Cells(item_n, list_n).Value = list_items(item_n)
Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » ユーザー設定リストを書き出すマクロ