「VBAでドロップダウンリストを作成したいけど、どうすればいいの?」
このような疑問を持ったことはありませんか?

・Excel VBAでドロップダウンリストを作成する方法を知りたい!
・VBAでリストの値を取得する方法を知りたい!
・データの追加に応じて、ドロップダウンの選択肢を動的に変更したい!



そんなときは 「Validation.Add」メソッドを
使うと解決できます!
この記事では、VBAを使ってExcelのドロップダウンリストを作成する方法を、初心者でもスムーズに理解できるように詳しく解説します。
ドロップダウンリストを使うと、決まった選択肢の中からデータを選べるので、入力ミスを防ぐことができます。
さらにVBAを使用することで、選択肢を自動更新することも可能です。
「VBAは難しそう…」と思っている方も、この記事を読めば すぐに実践できるはずです!
ぜひ最後まで読んで、Excel作業をもっと便利にしてみましょう 😊✨
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
VBAをしっかり学びたいけれど、「どこから始めればいいかわからない」と迷っていませんか?
そんな方には、UdemyのVBA講座がおすすめです。
動画での丁寧な解説や、実践的な学習スタイルで、初心者でも無理なく基礎から応用まで習得できます。
自己学習を進める上で、何度でも繰り返し見返せる講座は非常に心強い味方になりますよ!


\ 自分のペースで学べるVBA講座はこちら /
この記事でできるようになること
- VBAでドロップダウンを使うとどんなことが便利になるのか?確認を行う
- Validation.Addの基本構成を習得し手入力ミスを防ぐ
- Validation.Addを使用する際の注意ポイントを把握する
- Validation.Addの使用例を確認する
VBAでドロップダウンリストを使うとどんなことが便利になる?



そもそもドロップダウンってどういうもの?



ドロップダウンリストとは、あらかじめ用意した選択肢の中から、1つを選んで入力できる仕組み のことです。
Excelのセルをクリックすると、プルダウンメニューが表示され、そこから選択できるようになる ので、手入力が不要になります。
VBAでドロップダウンリストを使用しないと起きるミス
Excelでデータを入力するとき、こんなミスや手間に悩んだことはありませんか?
- 入力ミスが発生しやすい
- 「山田」「やまだ」「YAMADA」など、同じ名前なのにバラバラに入力されてしまう。
- データの集計が面倒
- 売上データをまとめたら、表記が統一されておらず、手作業で修正するハメに…。
- 毎回手入力が大変
- リストにある決まった項目なのに、毎回手入力するのが面倒。
VBAでドロップダウンリストを使えば、これらの問題を解決!
- 選択するだけで入力完了!
- 手入力が不要になり、入力ミスゼロ!
- データが統一される!
- 売上や顧客リストの表記ゆれがなくなり、集計作業がラクに!
- 入力の手間を削減!
- フォームや管理表の入力がスムーズになり、業務の効率化に!
さらに VBAを活用すれば、ドロップダウンリストの選択肢を自動更新できるので、データが増えても手作業の修正が不要になります!
Validation.Addの基本構文を理解しよう!
VBAでExcelのセルにドロップダウンリストを作成するには、「Validation.Add」メソッド を使います。
このメソッドを理解することで、リストの作成・入力制限の設定・エラーメッセージの制御など、柔軟なデータ入力管理が可能になります!
このセクションでは、Validation.Addの基本構文と、各引数の意味をわかりやすく解説します!
Validation.Addの基本構文


このコードの各引数には、それぞれ次のような意味があります。
引数 | 必須 | 説明 | 指定できる値 |
---|---|---|---|
Type | 必須 | 設定する入力制限の種類 | xlValidateList (リスト) xlValidateWholeNumber (整数) xlValidateDate (日付) など |
AlertStyle | 任意 | エラーメッセージの表示方法 | xlValidAlertStop (入力不可) xlValidAlertWarning (警告) xlValidAlertInformation (情報) |
Operator | 任意 | 条件を設定する(数値や日付の制限時のみ使用) | xlBetween (範囲内) xlNotBetween (範囲外) など |
Formula1 | 任意※1 | リストの選択肢や制限条件を設定 | "りんご,みかん,ぶどう" (直接指定) "=B2:B10" (セル範囲を指定) |
Formula2 | 任意 | 2つ目の制限条件(範囲を指定する場合に使用) | 数値や日付の範囲を指定する場合に入力 |
※1 Formula1
は xlValidateList
(ドロップダウンリスト)を使用する場合、「必須」です!
省略するとエラーが発生します。
さらに詳細な仕様については、Microsoft公式のValidation.Add メソッド (Excel)を参照してください。
Validation.Addの使用例をご紹介」をご覧ください。
とりあえず使用例を見たい方は、事項「Validation.Addの引数を詳しく解説!
Type(入力制限の種類)
Type
には、入力を制限するデータの種類を指定します。
指定値 | 設定内容 |
---|---|
xlValidateList | リストから選択(ドロップダウンリストを作成の場合はこちら) |
xlValidateWholeNumber | 整数のみ入力可能 |
xlValidateDecimal | 小数を含む数値のみ入力可能 |
xlValidateDate | 日付のみ入力可能 |
xlValidateTime | 時刻のみ入力可能 |
xlValidateTextLength | 指定した文字数以内のテキストのみ入力可能 |
xlValidateCustom | カスタム関数で入力を制限 |


ドロップダウンリストを作成する場合は xlValidateList
を指定しましょう。
AlertStyle(エラーメッセージの表示方法)
入力エラー時のメッセージ表示スタイルを指定できます。
指定値 | 表示内容 |
---|---|
xlValidAlertStop | ❌ 入力不可(最も厳しい制限) → 指定範囲外の値は入力できない |
xlValidAlertWarning | ⚠️ 警告(推奨しないが入力は可能) |
xlValidAlertInformation | ℹ️ 情報(注意喚起のみ、入力は可能) |


通常は xlValidAlertStop
を使用し、誤った入力を防ぐのが一般的です!
Operator(条件指定)
Type
に 数値や日付の制限を設定する場合に、Operator
を指定します。
指定値 | 設定内容 |
---|---|
xlBetween | 指定した範囲内のみ入力可能(例: 1~100の数値) |
xlNotBetween | 指定した範囲外のみ入力可能 |
xlGreater | 指定した値より大きい数のみ許可 |
xlLess | 指定した値より小さい数のみ許可 |
xlEqual | 指定した値のみ入力可能 |
xlNotEqual | 指定した値以外の入力を許可 |
- 下記引数はこの選択肢に相当します。
- 「Operator(条件指定)」
- 「Formula1(リストの選択肢や制限値)」
- 「Formula2(制限の上限値)」


ドロップダウンリストの場合は Operator
は使用しません!(数値や日付制限時のみ必要)
Formula1(リストの選択肢や制限値)
Formula1
には、ドロップダウンリストの選択肢や、入力制限の条件を指定します。
設定方法 | 指定内容 | 記述例 |
---|---|---|
カンマ区切りで直接入力 | 固定リストを設定する | "りんご,みかん,ぶどう" |
セル範囲を指定 | ワークシート上のデータをリストにする | "=B2:B10" |
- ドロップダウンリストを作成する場合は、
Formula1
に「カンマ区切りのリスト」または「セル範囲」を設定します。 - セル範囲を指定する場合、「=B2:B10」のように
=
をつける! - 別シートの範囲を指定する場合は「Sheet1!B2:B10」のようにシート名を追加!
Formula2(制限の上限値)
Formula2
は、範囲を指定する場合に、上限値を設定 します。
例えば、1〜100の整数を入力可能にする場合、Formula1 = 1
、Formula2 = 100
というように指定します。
- ドロップダウンリスト(
xlValidateList
)を作成する場合は、Formula2
は不要です。 xlValidateWholeNumber
などの制約付き入力ではFormula2
が必須になる場合あり!
その他の設定(Validationオブジェクトのプロパティ) | .IgnoreBlankと.InCellDropdown
.IgnoreBlank(空白の入力を許可)
このプロパティを True
にすると、リスト内の空白セルを選択可能になり、未入力(空欄)のままでもOKになります。False
にすると、リスト内に空白があっても選択不可となり、入力が必須になります。
設定値 | 動作 |
---|---|
True | 空白が許可され、未入力のままでもOK |
False | 空白が許可されず、入力が必須になる |
- 入力を必須にしたい場合は
False
に設定しましょう。 - リスト内に空白のセルが含まれる場合でも、選択可能にしたいなら
True
に設定する!
.InCellDropdown(セル内ドロップダウンの表示)
このプロパティは、セルをクリックしたときにドロップダウンリストのメニューを表示するかどうか を設定します。
設定値 | 動作 |
---|---|
True | セルをクリックするとプルダウンメニューが表示される(デフォルト設定) |
False | リスト以外の入力は制限されるが、ドロップダウンのプルダウンメニューは表示されない |
True
(デフォルト) にすると、リストを選択できるドロップダウンが表示されます。False
にすると、手入力の制限は有効だが、ドロップダウンメニューが非表示になります。
VBAのValidation.Addを使用する際の注意ポイント
VBA で Validation.Add を使ってExcelのドロップダウンリストを作成する際、エラーが発生することがあります。
ここでは、よくあるミスやエラーの原因、回避方法を詳しく解説します。
事前に把握しておけば、スムーズにドロップダウンリストを作成できますよ!
注意ポイント1 : 既存の入力規則を削除しないとエラーになる
セルにすでに入力規則(データの入力制限)が設定されている場合、Validation.Add
を実行するとエラーになります。
このエラーを防ぐためには、事前に Validation.Delete
を実行して、既存の入力規則をクリアする必要があります。


✅ 解決策:Validation.Delete で既存の入力規則を削除してから追加
Sub CreateDropDown()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws.Range("A1").Validation
.Delete '// 既存のリストを削除(これをしないとエラーが発生する)
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="りんご,みかん,ぶどう"
.IgnoreBlank = True
.InCellDropdown = True
End With
End Sub
Validation.Add
を実行する前に.Delete
を実行することで、エラーを回避することができます。
注意ポイント2 : Formula1のリストが 255文字を超えるとエラーになる場合がある
Formula1
にカンマ区切りのリストを指定する場合、Excel 2016 以前では255 文字を超えるとエラーが発生することがあります。
一方、Excel 2019 以降のバージョンでは255文字以上のリストでも正常に動作するケースが確認されています。
※公式ドキュメントでも「Formula1 は 255 文字を超えてはいけない」と記載されています。
スクロールできますFormula1の解説 引用元:Validation.Add メソッド (Excel)
Formula1 省略可能 バリアント型 (Variant) データ入力規則での条件式の最初の部分を指定します。
値は 255 文字を超えてはいけません。
問題が発生する可能性があるコード例
このコードは255文字を超えると、Excel 2016 以前ではエラーが発生する可能性があります! 🚨
Sub CreateDropDown_Over255Chars()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws.Range("A1").Validation
.Delete '// 既存のリストを削除
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="アイテム1,アイテム2,アイテム3,アイテム4,アイテム5,アイテム6,アイテム7,アイテム8,アイテム9,アイテム10," & _
"アイテム11,アイテム12,アイテム13,アイテム14,アイテム15,アイテム16,アイテム17,アイテム18,アイテム19,アイテム20," & _
"アイテム21,アイテム22,アイテム23,アイテム24,アイテム25,アイテム26,アイテム27,アイテム28,アイテム29,アイテム30"
.IgnoreBlank = True
.InCellDropdown = True
End With
End Sub
✅ 解決策(セル範囲を使用)
Excel のバージョンによって挙動が異なるため、確実にエラーを回避するには「セル範囲を使用する方法」がベストです。
Sub CreateDropDown_FromSheet()
With Range("A1").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="=Sheet2!B1:B30 " '// このようにしたら、sheet2のセルを参照できます。
.IgnoreBlank = True
.InCellDropdown = True
End With
End Sub
- このようにすると、Sheet2のセル範囲「B1:B30」をドロップダウンリストとして、Sheet1のセル「A1」に適用することができます。
VBA Validation.Addの使用例をご紹介 | 基本から応用まで
VBAでValidation.Addを活用する代表的な使用方法 を紹介します!
以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。
VBAをしっかり学びたいけれど、「どこから始めればいいかわからない」と迷っていませんか?
そんな方には、UdemyのVBA講座がおすすめです。
動画での丁寧な解説や、実践的な学習スタイルで、初心者でも無理なく基礎から応用まで習得できます。
自己学習を進める上で、何度でも繰り返し見返せる講座は非常に心強い味方になりますよ!


\ 自分のペースで学べるVBA講座はこちら /
使用例1: セルに「りんご・みかん・ぶどう」のドロップダウンリストを作成!
このコードでは、セルに「りんご・みかん・ぶどう」の3つから選択できるドロップダウンリストを作成 します。
Validation.Add の基本的な使い方を理解するためのシンプルな例です。
コード例 | 基本的なドロップダウンリストの作成
Sub CreateBasicDropDown()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
With ws.Range("A1").Validation
.Delete '// 既存の入力規則を削除
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="りんご,みかん,ぶどう"
.IgnoreBlank = True
.InCellDropdown = True
End With
End Sub
処理結果


コードの動作概要
ws
にSheet1
をセットし、対象のワークシートを指定します。
この指定により、以降の処理がSheet1
に適用されるようになります。
Validation.Delete
を実行して、既存のデータ入力規則を削除します。
これを行わないと、新しいリストを設定しようとした際にエラーが発生する可能性があります。
Validation.Add
を使って、新しくリストの選択肢(りんご・みかん・ぶどう)を設定します。
カンマ区切りのリストをFormula1
に指定することで、簡単にドロップダウンを作成できます。
IgnoreBlank = True
を設定することで、セルを空白のままにすることが可能になります。
これをFalse
にすると、必ずリスト内の値を入力しなければならなくなります。
InCellDropdown = True
を設定すると、セルをクリックした際にプルダウンメニューが表示されます。
これをFalse
にすると、選択肢は設定されるものの、リストが表示されなくなります。
このコードで使用している機能
機能名 | 説明 |
---|---|
Dim -set | オブジェクト変数にSheet1をセット |
With | オブジェクトを繰り返し使用 |
.Validation.Delete | 既存の入力規則を削除 |
.Validation.Add | 新しい入力規則を設定 |
xlValidateList | リストから選択可能なドロップダウンを作成 |
Formula1 | ドロップダウンの選択肢を設定 |
.IgnoreBlank | 空白の入力を許可 |
.InCellDropdown | ドロップダウンをセル内で表示 |
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub CreateBasicDropDown()
- サブルーチン「CreateBasicDropDown」を定義 します。
このマクロを実行すると、セル「A1」にドロップダウンが作成されます。
- サブルーチン「CreateBasicDropDown」を定義 します。
- Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets(“Sheet1”)
- オブジェクト変数「ws」に「Sheet1」をセット します。
「ws」を使うことで、可読性と保守性が向上します。
- オブジェクト変数「ws」に「Sheet1」をセット します。
- With ws.Range(“A1”).Validation
- セル「A1」の「Validation(データの入力規則)」にアクセスします。
- .Delete
- 既存の入力規則を削除し、エラーを回避します。
- .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=”りんご,みかん,ぶどう”
- ドロップダウンリストを作成します。
- 「Type:=xlValidateList」 → リスト形式の入力規則を設定
- 「AlertStyle:=xlValidAlertStop」 → 無効な値の入力を禁止
- 「Formula1:=”りんご,みかん,ぶどう”」 → 選択肢をカンマ区切りで指定
- ドロップダウンリストを作成します。
- .IgnoreBlank = True
- 空白の入力を許可 します。
- .InCellDropdown = True
- セル内でドロップダウンリストを表示 します。
- End With
- Withを終了します。
- End Sub
- サブルーチンを終了します。
総括・ポイント
- 基本的な
Validation.Add
の使い方を紹介しました。 - カンマ区切りで簡単にドロップダウンリストを作成可能です。
- 事前に
.Delete
を実行することでエラーを防ぐことができます。
使用例2: リストの選択肢を自動更新!VBAでドロップダウンを動的に管理
このコードでは、ドロップダウンのリストをVBAを使って動的に変更します。
例えば、リストの内容を別のセルに入力し、それをもとにドロップダウンリストを作成できます。
コード例 | リストの選択肢を動的に変更
Sub CreateDynamicDropDown()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
With ws.Range("A1").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="=Sheet2!A1:A5"
.IgnoreBlank = True
.InCellDropdown = True
End With
End Sub
処理結果


コードの動作概要
ws
にSheet1
をセットし、対象のワークシートを指定します。
この指定により、以降の処理がSheet1
に適用されるようになります。
Validation.Delete
を実行して、既存のデータ入力規則を削除します。
これを行わないと、新しいリストを設定しようとした際にエラーが発生する可能性があります。
Validation.Add
を使って、新しくSheet2のセル範囲「A1からA5」を設定します。
IgnoreBlank = True
を設定することで、セルを空白のままにすることが可能になります。
これをFalse
にすると、必ずリスト内の値を入力しなければならなくなります。
InCellDropdown = True
を設定すると、セルをクリックした際にプルダウンメニューが表示されます。
これをFalse
にすると、選択肢は設定されるものの、リストが表示されなくなります。
このコードで使用している機能
機能名 | 説明 |
---|---|
Dim -set | オブジェクト変数にSheet1をセット |
With | オブジェクトを繰り返し使用 |
.Validation.Delete | 既存の入力規則を削除 |
.Validation.Add | 新しい入力規則を設定 |
xlValidateList | リストから選択可能なドロップダウンを作成 |
Formula1 | ドロップダウンの選択肢を設定 |
.IgnoreBlank | 空白の入力を許可 |
.InCellDropdown | ドロップダウンをセル内で表示 |
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub CreateDynamicDropDown()
- サブルーチン「CreateDynamicDropDown」を定義 します。
このマクロを実行すると、セル「A1」に動的なドロップダウンリストが作成 されます。
- サブルーチン「CreateDynamicDropDown」を定義 します。
- Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets(“Sheet1”)
- オブジェクト変数「ws」に「Sheet1」をセット します。
「ws」を使うことで、可読性と保守性が向上します。
- オブジェクト変数「ws」に「Sheet1」をセット します。
- With ws.Range(“A1”).Validation
- セル「A1」の「Validation(データの入力規則)」にアクセスします。
- .Delete
- 既存の入力規則を削除し、エラーを回避します。
- .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=”=Sheet2!A1:A5″
- 新しいドロップダウンリストを作成 します。
- 「Type:=xlValidateList」 → リスト形式のドロップダウンを設定
- 「AlertStyle:=xlValidAlertStop」 → 無効な値の入力を禁止(エラー時にストップ)
- 「=Sheet2!A1:A5」 → Sheet2のセル範囲「A1:A5」の値をドロップダウンの選択肢として使用
- 新しいドロップダウンリストを作成 します。
- .IgnoreBlank = True
- 空白の入力を許可 します。
- .InCellDropdown = True
- セル内でドロップダウンリストを表示 します。
- End With
- Withを終了します。
- End Sub
- サブルーチンを終了します。
総括・ポイント
- セル範囲を
Formula1
に指定することで、リストを後から変更できます。 - カンマ区切りで簡単にドロップダウンリストを作成可能です。
- 事前に
.Delete
を実行することでエラーを防ぐことができます。
この記事のまとめ
この記事では、VBAでドロップダウンリストを作成する方法を詳しく解説しました。
Validation.Add
メソッド を使えば、簡単にドロップダウンリストを作成できる!Formula1
にセル範囲を指定すれば、リストの内容を動的に変更可能!.IgnoreBlank
や.InCellDropdown
の設定を理解して、より柔軟に制御できる!
VBAを活用することで、手作業でのデータ入力を効率化し、入力ミスを防ぐ ことができます! 🚀✨
ポイントのおさらい
✅ VBAでドロップダウンリストを作成する基本方法
VBAでドロップダウンリストを作成するには、「Validation.Add メソッド」を使用します。
👉 詳しくはこちら
⇒ 「Validation.Addの基本構文を理解しよう!」をもう一度見る
VBAでドロップダウンリストを使用する際の注意ポイント
VBAを使う際には、いくつかの制約や注意ポイントがあります。
特に、以下の2つのポイントに気をつける必要があります。
- 既存の入力規則を削除しないとエラーになる
- Formula1 に 255文字以上のリストを指定するとエラーが発生する可能性がある
👉 詳しくはこちら
⇒ 「VBAのValidation.Addを使用する際の注意ポイント」をもう一度見る
✅ VBAのValidation.Addを活用した使用例
VBAを活用すると、ドロップダウンリストを使った便利な処理を自動化できます!
以下の 2つの使用例を紹介しました。
使用例 | 概要 | 活用シーン |
---|---|---|
使用例1 | セルに「りんご・みかん・ぶどう」のドロップダウンリストを作成! | 固定リストの作成 |
使用例2 | リストの選択肢を自動更新!VBAでドロップダウンを動的に管理 | データの変更に対応 |




さらに学ぶために
VBAのドロップダウンリストの作成を学んだら、次は関連するVBAの便利な機能を学んでみましょう!
以下の機能や方法と組み合わせると、Excel作業をさらに効率化できます。

