Excel VBAで配列からデータの入力規則リスト(ドロップダウンリスト)を作成する方法
Microsoft Excelにおけるデータの入力規則(データバリデーション)は、ワークシート上の入力値を制御・検証できる便利な機能です。特定の範囲の値から選択させたい場合、ドロップダウンリストを活用することで、同じ値を何度も手入力する手間を省き、入力ミスを防ぐことができます。このチュートリアルでは、Excel VBAを使って配列からデータの入力規則リストを作成する方法を、初心者の方にもわかりやすく解説します。
具体例と図解を交えて丁寧に説明していくので、最後まで読んでマスターしましょう。
Excelの「データの入力規則」とは?
データの入力規則とは、セルに入力できる値を制限・制御する機能のことです。入力できる値が決まっているフィールドには、ドロップダウンリストを使うことで、ユーザーは一覧から選択するだけで済みます。手入力によるタイプミスや表記ゆれを防ぎ、常に正しいデータだけが入力されるようになります。
この機能が「入力規則」と呼ばれるのは、リストに含まれる有効なデータのみを受け付けるためです。
特に、そのデータセットを初めて扱うユーザーにとって役立ちます。あらかじめ作成されたドロップダウンリストから選ぶだけでよいため、入力ルールを覚える必要がありません。
VBAで配列から入力規則リストを作成する手順
まず、今回使用するサンプルデータセットをご覧ください。

ここでは、販売担当者の名前と、勤務地域(Region)、販売商品(Product)のデータを用意しました。このうち、Region列とProduct列に対して、入力規則リストを作成していきます。
入力規則リストに登録する内容は以下の通りです。
- Region(地域):「North」「South」「East」「West」
- Product(商品):「TV」「Fridge」「Mobile」「Laptop」「AC」
入力規則リストは従来の手動操作でも作成できますが、今回はVBAコードを使用します。VBAコード内でこれらの値を配列に格納し、その配列をもとに入力規則を設定する流れです。
以下では、コードを段階的に構築していきます。ぜひご自身でも一緒にコードを書きながら進めてみてください。実際に手を動かすことで、理解が深まります。それでは始めましょう。
配列から入力規則リストを作成するVBAコードの構築
このセクションでは、配列を使ってデータの入力規則リストを作成するVBAコードの書き方を学びます。Region列とProduct列にドロップダウンリストを設定します。
📌 ステップ1:VBAエディターを開く
- まず、キーボードでAlt + F11を押して、VBAエディター(VBE)を開きます。
- 次に、メニューから挿入 > 標準モジュールを選択します。

📌 ステップ2:Subプロシージャを宣言する
続いて、以下のコードを入力します。
Sub data_validation_from_array()
End Sub
これがSubプロシージャです。以降のコードはすべてこの中に記述していきます。
📌 ステップ3:必要な変数を宣言する
次に、後ほど使用する変数を宣言しましょう。
Sub data_validation_from_array()
Dim region, product As Variant
Dim region_range, product_range As Range
End Sub
配列用の変数はVariant型として宣言しています。この変数には複数の文字列が格納されます。
region_range / product_range: これらの変数は、Region列とProduct列のセル範囲を格納するために使います。
📌 ステップ4:配列を設定する
Sub data_validation_from_array()
Dim region, product As Variant
Dim region_range, product_range As Range
region = Array("North", "South", "East", "West")
product = Array("TV", "Fridge", "Mobile", "Laptop", "AC")
End Sub
ご覧のとおり、region変数とproduct変数に文字列を格納しました。これらの値を使ってドロップダウンリストを作成します。
📌 ステップ5:入力規則を適用するセル範囲を設定する
Sub data_validation_from_array()
Dim region, product As Variant
Dim region_range, product_range As Range
region = Array("North", "South", "East", "West")
product = Array("TV", "Fridge", "Mobile", "Laptop", "AC")
Set region_range = Range("C5:C10")
Set product_range = Range("D5:D10")
End Sub
Set region_range = Range("C5:C10"):この行で、Region列のセル範囲を指定しています。

Set product_range = Range("D5:D10"):こちらの行は、Product列のセル範囲を指定しています。

📌 ステップ6:Region列に入力規則リストを作成する
Sub data_validation_from_array()
Dim region, product As Variant
Dim region_range, product_range As Range
region = Array("North", "South", "East", "West")
product = Array("TV", "Fridge", "Mobile", "Laptop", "AC")
Set region_range = Range("C5:C10")
Set product_range = Range("D5:D10")
With region_range.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=Join(region, ",")
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = "Error"
.InputMessage = ""
.ErrorMessage = "Please Provide a Valid Input"
.ShowInput = True
.ShowError = True
End With
End Sub
各コードの意味を詳しく見ていきましょう。
With region_range.Validation: Region列のValidationオブジェクトを操作対象として選択しています。
.Delete: 既存の入力規則がある場合、それを削除します。
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=Join(region, ","):ここで入力規則リストを追加しています。
- AlertStyleは、リスト外の値が入力されたときに表示するアラートの種類を指定します。
- Formula1:=Join(region, ","):Formula1で、入力規則リストの値を渡しています。region配列に格納した文字列を、Joinメソッドでカンマ区切りの1つの文字列に結合しています。この結合された値が、入力規則リストのソースになります。
.IgnoreBlank = True:空白の入力を許可します。
.InCellDropdown = True:セルに許容値のドロップダウンリストを表示します。
.ErrorTitle = "Error":入力規則エラーダイアログボックスのタイトルを設定します。
.ErrorMessage = "Please Provide a Valid Input":エラーダイアログボックスに表示するエラーメッセージを設定します。
.ShowInput = True:入力規則が設定されたセルをクリックしたときに、入力メッセージを表示します。
.ShowError = True:無効な値が入力された場合に、エラーダイアログボックスを表示します。
📌 ステップ7:Product列に入力規則リストを作成する
Sub data_validation_from_array()
Dim region, product As Variant
Dim region_range, product_range As Range
region = Array("North", "South", "East", "West")
product = Array("TV", "Fridge", "Mobile", "Laptop", "AC")
Set region_range = Range("C5:C10")
Set product_range = Range("D5:D10")
With region_range.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=Join(region, ",")
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = "Error"
.InputMessage = ""
.ErrorMessage = "Please Provide a Valid Input"
.ShowInput = True
.ShowError = True
End With
With product_range.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=Join(product, ",")
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = "Error"
.InputMessage = ""
.ErrorMessage = "Please Provide a Valid Input"
.ShowInput = True
.ShowError = True
End With
End Sub
With product_range.Validation: 今度はProduct列のValidationオブジェクトを操作対象としています。
.Delete: 既存の入力規則があれば削除します。
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=Join(product, ","):ここで入力規則リストを追加しています。
- AlertStyleは、リスト外の値が入力された際のアラートの種類を決定します。
- Formula1:=Join(product, ","):Formula1で入力規則リストの値を渡します。product配列の文字列を、Joinメソッドでカンマ区切りに結合し、それをリストのソースとしています。
以降のプロパティ設定(.IgnoreBlank、.InCellDropdown、.ErrorTitleなど)は、ステップ6のRegion列の場合と同様です。
VBAコードを実行する
これでVBAコードの構築が完了しました。次に、コードが正しく動作するかどうかを確認しましょう。現在のシートでこのコードを実行します。
まず、キーボードでAlt + F8を押して、マクロダイアログボックスを開きます。

次に、data_validation_from_arrayを選択して、実行をクリックします。
では、Region列の任意のセルをクリックしてみましょう。

セルの横にドロップダウンのアイコンが表示されていますね。このアイコンをクリックします。

入力規則リストに登録されたすべての値が表示されました。これは、VBAコードのregion配列に格納した値そのものです。各セルでデータを選択していきます。

続いて、Product列も確認してみましょう。Product列の任意のセルをクリックします。

こちらにもドロップダウンアイコンが表示されています。クリックしてみましょう。

ご覧のとおり、VBAコードのproduct配列に格納したすべての値が表示されています。これで、VBAコードを使って配列から入力規則リストを作成できました。
次に、リストに存在しない値を入力してみます。「Headphone」という商品を試しに入力してみましょう。

Enterキーを押すと、次のような画面が表示されます。

エラーダイアログボックスが表示されました。VBAコードで設定したエラータイトルとエラーメッセージが、そのまま表示されているのが確認できます。
💬 注意点
✎ 入力規則が設定されたセルはコピー&ペーストできます。貼り付け先のセルにも同じ入力規則リストが適用されます。
✎ この方法で作成したリストは動的配列ではありません。入力規則リストを拡張したい場合は、配列内の文字列に新しい値を追加すればOKです。
まとめ
今回は、Excel VBAを使って配列からデータの入力規則リストを作成する方法を解説しました。ぜひご自身のデータセットに応用してみてください。練習用ワークブックをダウンロードして、実際に試してみることをおすすめします。コメント欄でのフィードバックもお待ちしております。皆さまの貴重なご意見が、今後のチュートリアル作成のモチベーションになります。
Excelに関するさまざまな問題と解決策については、当サイトExceldemy.comもぜひチェックしてください。
新しい学びを止めず、成長を続けましょう!
関連記事
- Excelの入力規則数式でIF関数を使う方法(6選)
- Excel VBAで名前付き範囲を使った入力規則リストの作成
- Excel VBAでReDim Preserveを使って2次元配列を再定義する方法(2選)
- Excel VBAで配列から重複を削除する方法(2例)
- VBAで配列の平均値を計算する方法(マクロ・UDF・ユーザーフォーム)
-
Excelで総勘定元帳を作成する方法|一般仕訳データから簡単に作る手順を解説
日々の取引を記録するために仕訳帳を活用している事業者の方は多いでしょう。これらの取引データは、Excelやその他のツールに入力して管理できます。この一般仕訳データをもとにすれば、「総勘定元帳」と呼ばれる勘定別の台帳を作成することが可能です。本記事では、Excelで一般仕訳データから総勘定元帳を作成する方法を、手順を追って詳しく解説します。仕訳データや総勘定元帳に関する知識を深めるのに役立つ内容となっていますので、ぜひ最後までご覧ください。 一般仕訳帳とは? 一般仕訳帳とは、企業のすべての財務取引を記録する会計帳簿のことです。すべての取引の元となる「マスター」的な存在であり、企業が年間を通じて行
-
Excelでデータからマインドマップを作成する2つの方法(SmartArtと図形を活用)
Excelでマインドマップを作成する方法をお探しですか?この記事はまさにそのためのものです。Excelには、データを見やすく可視化するためのグラフやスパークラインを作成できる機能がありますが、データから直接マインドマップを作成する専用ツールは搭載されていません。しかし、ご安心ください。Excelの標準機能を組み合わせれば、マインドマップを作成することは十分可能です。本記事では、Excelでデータからマインドマップを作成する具体的な手順を詳しく解説します。 練習用ファイルは、下記のリンクからダウンロードできます。 マインドマップとは? マインドマップとは、ある中心的なコンセプト(テーマ)