Home » ExcelVBA Rangeオブジェクト » 入力規則・Validation » VBAでドロップダウンリストを作成する

VBAでドロップダウンリストを作成する

対象:Excel2007, Excel2010, Excel2013

VBAでドロップダウンリストを作成する

「excel2010 マクロ ドロップダウンリスト 自動作成」
「エクセル マクロ ドロップダウンリスト add」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。

ドロップダウンリストを作成するExcelマクロ・VBAのコードを探している方による検索キーワードです。

[スポンサードリンク]

Excelのドロップダウンリストはいくつかありますが、入力規則機能を使ったドロップダウンリストを作る、簡単なマクロをご紹介しておきます。

選択されているセルに入力規則のドロップダウンリストを作成するサンプルマクロ

以下のようなマクロで、選択されているセルに「東京」「大阪」「名古屋」という項目を持ったドロップダウンリストを作ることができます。

Sub ドロップダウンリストを作成する_基本()
 With Selection.Cells.Validation
  .Delete
  .Add _
    Type:=xlValidateList, _
    Formula1:="東京, 大阪, 名古屋"
 End With
End Sub

作成だけならば、
 Selection.Cells.Validation.Add _
  Type:=xlValidateList, _
  Formula1:="東京, 大阪, 名古屋"
というコードでOKです。

ですが、既に入力規則が設定されているときには、実行時エラーが発生してしまいますので、設定済みの入力規則を削除してから、
 With Selection.Cells.Validation
  .Delete
その後、作成を行っています。
  .Add _
    Type:=xlValidateList, _
    Formula1:="東京, 大阪, 名古屋"

ValidationオブジェクトのAddメソッドの引数・Typeに定数・xlValidateListを指定して、引数Formula1にリストの項目を指定すればOKです。

選択されているセルではなく、例えばA1:A10セルにドロップダウンリストを作成したいのなら、
 With Range("A1", "A10").Validation
  .Delete
  .Add _
    Type:=xlValidateList, _
    Formula1:="東京, 大阪, 名古屋"
 End With
で、OKです。ループを回す必要はありません。

ワークシートに入力されているデータをドロップダウン表示するサンプルマクロ

入力規則のドロップダウンリストには、シートに入力されているデータを表示させることも可能です。同じことをVBAから行うのなら以下のようなマクロです。

Sub ドロップダウンリストを作成する_セル指定()
 With Selection.Cells.Validation
  .Delete
  .Add _
    Type:=xlValidateList, _
    Formula1:="=マスタ!$G$1:$G$7"
 End With
End Sub

上記のマクロを実行すると「マスタ」という名前のワークシートのG1:G7セルに入力されている値がドロップダウンリストに表示されるようになります。

先のマクロと違うのは、Validation.Addメソッドの引数・Formula1だけです。

先のマクロでは、
    Formula1:="東京, 大阪, 名古屋"
となっていましたが、このマクロでは、
    Formula1:="=マスタ!$G$1:$G$7"
としています。

ドロップダウン表示させたいデータが、同じワークシートのG1:G7セルに存在している場合は、
    Formula1:="=$G$1:$G$7"
です。

最終更新日時:2023-06-13 15:57

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » 入力規則・Validation » VBAでドロップダウンリストを作成する

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

検索


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

.