【完全ガイド】VBAでドロップダウンリストを作成・取得・動的に管理する方法

当ページのリンクには広告 (Amazonアソシエイト含む) が含まれています。
アイキャッチt

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


Excel VBAでドロップダウンリストを作成する方法を知りたい!

VBAでリストの値を取得する方法を知りたい!

データの追加に応じて、ドロップダウンの選択肢を動的に変更したい!

そんなときは 「Validation.Add」メソッド
使うと解決できます!


この記事では、VBAを使ってExcelのドロップダウンリストを作成する方法を、初心者でもスムーズに理解できるように詳しく解説します。

ドロップダウンリストを使うと、決まった選択肢の中からデータを選べるので、入力ミスを防ぐことができます。
さらにVBAを使用することで、選択肢を自動更新することも可能です。

「VBAは難しそう…」と思っている方も、この記事を読めば すぐに実践できるはずです!
ぜひ最後まで読んで、Excel作業をもっと便利にしてみましょう 😊✨


【 この記事の概要 】

よく使う度
難しさ
覚えておくと安心度

VBAをしっかり学びたいけれど、「どこから始めればいいかわからない」と迷っていませんか?

そんな方には、UdemyのVBA講座がおすすめです。

動画での丁寧な解説や、実践的な学習スタイルで、初心者でも無理なく基礎から応用まで習得できます。
自己学習を進める上で、何度でも繰り返し見返せる講座は非常に心強い味方になりますよ!

多彩な講座から自分に合った講座を探そう!
UdemyでVBAを検索
UdemyでVBAを検索 画像出典:Udemy

\  自分のペースで学べるVBA講座はこちら  /

目次

この記事でできるようになること

スポンサーリンク

VBAでドロップダウンリストを使うとどんなことが便利になる?

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

ドロップダウンリストとは、あらかじめ用意した選択肢の中から、1つを選んで入力できる仕組み のことです。
Excelのセルをクリックすると、プルダウンメニューが表示され、そこから選択できるようになる ので、手入力が不要になります。

ドロップダウンとは?

VBAでドロップダウンリストを使用しないと起きるミス

Excelでデータを入力するとき、こんなミス手間に悩んだことはありませんか?

悩んだことはありませんか?
  • 入力ミスが発生しやすい
    • 「山田」「やまだ」「YAMADA」など、同じ名前なのにバラバラに入力されてしまう。
  • データの集計が面倒
    • 売上データをまとめたら、表記が統一されておらず、手作業で修正するハメに…。
  • 毎回手入力が大変
    • リストにある決まった項目なのに、毎回手入力するのが面倒。

VBAでドロップダウンリストを使えば、これらの問題を解決!

例えば…
  • 選択するだけで入力完了!
    • 手入力が不要になり、入力ミスゼロ!
  • データが統一される!
    • 売上や顧客リストの表記ゆれがなくなり、集計作業がラクに!
  • 入力の手間を削減!
    • フォームや管理表の入力がスムーズになり、業務の効率化に!

さらに VBAを活用すれば、ドロップダウンリストの選択肢を自動更新できるので、データが増えても手作業の修正が不要になります!

Validation.Addの基本構文を理解しよう!

VBAでExcelのセルにドロップダウンリストを作成するには、「Validation.Add」メソッド を使います。
このメソッドを理解することで、リストの作成・入力制限の設定・エラーメッセージの制御など、柔軟なデータ入力管理が可能になります!

このセクションでは、Validation.Addの基本構文と、各引数の意味をわかりやすく解説します!

Validation.Addの基本構文

Validation.Addの構成

このコードの各引数には、それぞれ次のような意味があります。

スクロールできます
引数必須説明指定できる値
Type必須設定する入力制限の種類xlValidateList(リスト) xlValidateWholeNumber(整数) xlValidateDate(日付) など
AlertStyle任意エラーメッセージの表示方法xlValidAlertStop(入力不可) xlValidAlertWarning(警告) xlValidAlertInformation(情報)
Operator任意条件を設定する(数値や日付の制限時のみ使用)xlBetween(範囲内) xlNotBetween(範囲外) など
Formula1任意※1リストの選択肢や制限条件を設定"りんご,みかん,ぶどう"(直接指定) "=B2:B10"(セル範囲を指定)
Formula2任意2つ目の制限条件(範囲を指定する場合に使用)数値や日付の範囲を指定する場合に入力

※1 Formula1xlValidateList(ドロップダウンリスト)を使用する場合、「必須」です!
  省略するとエラーが発生します。

さらに詳細な仕様については、Microsoft公式のValidation.Add メソッド (Excel)を参照してください。

とりあえず使用例を見たい方は、事項「Validation.Addの使用例をご紹介」をご覧ください。

Validation.Addの引数を詳しく解説!

Type(入力制限の種類)

Type には、入力を制限するデータの種類を指定します。

スクロールできます
指定値設定内容
xlValidateListリストから選択(ドロップダウンリストを作成の場合はこちら)
xlValidateWholeNumber整数のみ入力可能
xlValidateDecimal小数を含む数値のみ入力可能
xlValidateDate日付のみ入力可能
xlValidateTime時刻のみ入力可能
xlValidateTextLength指定した文字数以内のテキストのみ入力可能
xlValidateCustomカスタム関数で入力を制限
Type(入力制限の種類)の画面について

ドロップダウンリストを作成する場合は xlValidateList を指定しましょう。

AlertStyle(エラーメッセージの表示方法)

入力エラー時のメッセージ表示スタイルを指定できます。

スクロールできます
指定値表示内容
xlValidAlertStop入力不可(最も厳しい制限) → 指定範囲外の値は入力できない
xlValidAlertWarning⚠️ 警告(推奨しないが入力は可能)
xlValidAlertInformationℹ️ 情報(注意喚起のみ、入力は可能)
AlertStyle(エラーメッセージの表示方法)の画面

通常は xlValidAlertStop を使用し、誤った入力を防ぐのが一般的です!

Operator(条件指定)

Type に 数値や日付の制限を設定する場合に、Operator を指定します。

スクロールできます
指定値設定内容
xlBetween指定した範囲内のみ入力可能(例: 1~100の数値)
xlNotBetween指定した範囲外のみ入力可能
xlGreater指定した値より大きい数のみ許可
xlLess指定した値より小さい数のみ許可
xlEqual指定した値のみ入力可能
xlNotEqual指定した値以外の入力を許可
「Operator(条件指定)」「Formula1(リストの選択肢や制限値)」「Formula2(制限の上限値)」
「Operator(条件指定)」「Formula1(リストの選択肢や制限値)」「Formula2(制限の上限値)」の画面

ドロップダウンリストの場合は Operator は使用しません!(数値や日付制限時のみ必要)

Formula1(リストの選択肢や制限値)

Formula1 には、ドロップダウンリストの選択肢や、入力制限の条件を指定します。

スクロールできます
設定方法指定内容記述例
カンマ区切りで直接入力固定リストを設定する"りんご,みかん,ぶどう"
セル範囲を指定ワークシート上のデータをリストにする"=B2:B10"
  • ドロップダウンリストを作成する場合は、Formula1に「カンマ区切りのリスト」または「セル範囲」を設定します。
  • セル範囲を指定する場合、「=B2:B10」のように = をつける!
  • 別シートの範囲を指定する場合は「Sheet1!B2:B10」のようにシート名を追加!

Formula2(制限の上限値)

Formula2 は、範囲を指定する場合に、上限値を設定 します。
例えば、1〜100の整数を入力可能にする場合、Formula1 = 1Formula2 = 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.Addを実行するとエラーになる

✅ 解決策: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省略可能バリアント型 (Variant)データ入力規則での条件式の最初の部分を指定します。
値は 255 文字を超えてはいけません。
Formula1の解説 引用元:Validation.Add メソッド (Excel)

問題が発生する可能性があるコード例

このコードは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講座がおすすめです。

動画での丁寧な解説や、実践的な学習スタイルで、初心者でも無理なく基礎から応用まで習得できます。
自己学習を進める上で、何度でも繰り返し見返せる講座は非常に心強い味方になりますよ!

多彩な講座から自分に合った講座を探そう!
UdemyでVBAを検索
UdemyでVBAを検索 画像出典:Udemy

\  自分のペースで学べる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

処理結果

使用例1の結果

コードの動作概要

STEP
対象のワークシートを指定

wsSheet1をセットし、対象のワークシートを指定します。
この指定により、以降の処理がSheet1に適用されるようになります。

STEP
既存の入力規則をクリア

Validation.Deleteを実行して、既存のデータ入力規則を削除します。
これを行わないと、新しいリストを設定しようとした際にエラーが発生する可能性があります。

STEP
新しいドロップダウンリストを設定

Validation.Addを使って、新しくリストの選択肢(りんご・みかん・ぶどう)を設定します。
カンマ区切りのリストをFormula1に指定することで、簡単にドロップダウンを作成できます。

STEP
空白の入力を許可する

IgnoreBlank = Trueを設定することで、セルを空白のままにすることが可能になります。
これをFalseにすると、必ずリスト内の値を入力しなければならなくなります。

STEP
セル内にドロップダウンを表示する

InCellDropdown = Trueを設定すると、セルをクリックした際にプルダウンメニューが表示されます。
これをFalseにすると、選択肢は設定されるものの、リストが表示されなくなります。

このコードで使用している機能

スクロールできます
機能名説明
Dim -setオブジェクト変数にSheet1をセット
Withオブジェクトを繰り返し使用
.Validation.Delete既存の入力規則を削除
.Validation.Add新しい入力規則を設定
xlValidateListリストから選択可能なドロップダウンを作成
Formula1ドロップダウンの選択肢を設定
.IgnoreBlank空白の入力を許可
.InCellDropdownドロップダウンをセル内で表示

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub CreateBasicDropDown()
    • サブルーチン「CreateBasicDropDown」を定義 します。
      このマクロを実行すると、セル「A1」にドロップダウンが作成されます。
  2. Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets(“Sheet1”)
    • オブジェクト変数「ws」に「Sheet1」をセット します。
      「ws」を使うことで、可読性と保守性が向上します。
  3. With ws.Range(“A1”).Validation
    • セル「A1」の「Validation(データの入力規則)」にアクセスします。
  4. .Delete
    • 既存の入力規則を削除し、エラーを回避します。
  5. .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=”りんご,みかん,ぶどう”
    • ドロップダウンリストを作成します。
      • 「Type:=xlValidateList」 → リスト形式の入力規則を設定
      • 「AlertStyle:=xlValidAlertStop」 → 無効な値の入力を禁止
      • 「Formula1:=”りんご,みかん,ぶどう”」 → 選択肢をカンマ区切りで指定
  6. .IgnoreBlank = True
    • 空白の入力を許可 します。
  7. .InCellDropdown = True
    • セル内でドロップダウンリストを表示 します。
  8. End With
    • Withを終了します。
  9. 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

処理結果

使用例2の結果

コードの動作概要

STEP
対象のワークシートを指定

wsSheet1をセットし、対象のワークシートを指定します。
この指定により、以降の処理がSheet1に適用されるようになります。

STEP
既存の入力規則をクリア

Validation.Deleteを実行して、既存のデータ入力規則を削除します。
これを行わないと、新しいリストを設定しようとした際にエラーが発生する可能性があります。

STEP
新しいドロップダウンリストを設定

Validation.Addを使って、新しくSheet2のセル範囲「A1からA5」を設定します。

STEP
空白の入力を許可する

IgnoreBlank = Trueを設定することで、セルを空白のままにすることが可能になります。
これをFalseにすると、必ずリスト内の値を入力しなければならなくなります。

STEP
セル内にドロップダウンを表示する

InCellDropdown = Trueを設定すると、セルをクリックした際にプルダウンメニューが表示されます。
これをFalseにすると、選択肢は設定されるものの、リストが表示されなくなります。

このコードで使用している機能

スクロールできます
機能名説明
Dim -setオブジェクト変数にSheet1をセット
Withオブジェクトを繰り返し使用
.Validation.Delete既存の入力規則を削除
.Validation.Add新しい入力規則を設定
xlValidateListリストから選択可能なドロップダウンを作成
Formula1ドロップダウンの選択肢を設定
.IgnoreBlank空白の入力を許可
.InCellDropdownドロップダウンをセル内で表示

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub CreateDynamicDropDown()
    • サブルーチン「CreateDynamicDropDown」を定義 します。
      このマクロを実行すると、セル「A1」に動的なドロップダウンリストが作成 されます。
  2. Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets(“Sheet1”)
    • オブジェクト変数「ws」に「Sheet1」をセット します。
      「ws」を使うことで、可読性と保守性が向上します。
  3. With ws.Range(“A1”).Validation
    • セル「A1」の「Validation(データの入力規則)」にアクセスします。
  4. .Delete
    • 既存の入力規則を削除し、エラーを回避します。
  5. .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=”=Sheet2!A1:A5″
    • 新しいドロップダウンリストを作成 します。
      • 「Type:=xlValidateList」 → リスト形式のドロップダウンを設定
      • 「AlertStyle:=xlValidAlertStop」 → 無効な値の入力を禁止(エラー時にストップ)
      • 「=Sheet2!A1:A5」 → Sheet2のセル範囲「A1:A5」の値をドロップダウンの選択肢として使用
  6. .IgnoreBlank = True
    • 空白の入力を許可 します。
  7. .InCellDropdown = True
    • セル内でドロップダウンリストを表示 します。
  8. End With
    • Withを終了します。
  9. 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 Validation.Addの使用例をご紹介 | 基本から応用まで」をもう一度見る

さらに学ぶために

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

あわせて読みたい
サイトマップ このページは、本サイトの記事を分かりやすくまとめました。ぜひご覧ください。 目次 「VBA」を見る 「Officeスクリプト」を見る 「ワークシート関数」を見る 「JavaScr...
スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次