Excel プルダウンで複数選択する方法
入力規則のプルダウンメニューで複数選択をしたい場合がありますが
単一選択しかサポートされていません。しかし替わりとなる方法は存在します。
この記事では、その方法と特徴を紹介します。
二つの方法と特徴
実現方法は二つあります。
- チェックボックス
- 複数選択リストボックス
①チェックボックスの特徴
複数選択の代表例です。
![チャックボックスのキャプチャ](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-148.png)
簡単に実現できる利点がありますが、選択肢が増えると場所を使ってしまうのと
手間が大きくなってしまうのが欠点です。
②複数選択リストボックス
プルダウンメニューをそのまま複数選択にした感覚に近いです。
![複数選択リストボックスのキャプチャ](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-149.png)
スクロールすることが出来るため選択肢が増えても場所を取らず
更に手間も大きくならない利点があります。
![複数選択リストボックスを折りたたんだ状態のキャプチャ](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-150.png)
ただしリストボックスを複数選択にする場合、
マクロ・VBAを使用する必要があるためハードルが高いのが欠点です。
設定手順
共通・「開発」メニューを追加
どちらの方法を使うにしても「開発」を使用します。
もしメニューに「開発」がない場合は追加しておきましょう。
![「開発」メニューの図解](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/07/image-166.png)
メニューの何もない場所を右クリックし、「リボンのユーザー設定」を選択します。
![メニューのないもない場所を右クリックし、「リボンのユーザー設定」を選択する図解](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/07/image-168.png)
「開発」にチェックを入れます。すると「開発」がメニューに表示されます。
![「開発」にチェックする図解](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/07/image-169.png)
①チェックボックス
「開発」より「挿入」、「フォームコントロール」の「チェックボックス」を選択します。
![「開発」より「挿入」、「フォームコントロール」の「チェックボックス」を選択する図解](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-151.png)
次にチェックボックスを置きたい場所をクリックすると
チェックボックスが一つ追加されます。
![チェックボックスが追加されたキャプチャ](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-152.png)
チェックボックスを右クリックしその状態で
チェック1となっている表記を左クリックすると編集可能です。
![表記を変えた状態のキャプチャ](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-153.png)
次に右クリックしてメニューを開き「コントロールの書式設定」をクリックします。
![右クリックしてメニューを開き「コントロールの書式設定」をクリックする図解](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-154.png)
次にリンクするセルを設定します。
![リンクするセルを設定する図解](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-155.png)
この状態でチェックボックスを押すと
リンクしたセルに論理値が反映されます。
![チェックがオン状態=TRUEのキャプチャ](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-156.png)
![チェックがオフ状態=FALSEのキャプチャ](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-157.png)
これを繰り返すことで複数選択が可能になります。
![複数選択をチェックボックスで実現した状態のキャプチャ](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-158.png)
なおチェック状態を数式に組み込む必要がない場合は
リンクするセルは設定の必要がありません。
②複数選択リストボックス
サンプルファイルと利用方法
サンプルファイルで使用可能です。
「リストボックス」シートに複数選択リストボックスを置いてあります。
このサンプルを利用するだけならマクロの知識は不要です。
![「リストボックス」シートのキャプチャ](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-159.png)
「Work」シートの内容です。
A2セルから下に選択肢を記述します。
B2セルには選択した一覧がカンマ区切りで表示されます。
C2セルから右にはセル別に選択した一覧が表示されます。
![「Work」シートのキャプチャ](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-161.png)
この複数選択リストボックスは、そのままでは大きさの変更などが不可能です。
変更するには「開発」より「デザインモード」を選択します。
![「開発」より「デザインモード」を選択する図解](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-162.png)
この状態でリストボックスを選択すると大きさの変更が可能です。
このデザインモードはオンのままだと項目選択が出来なくなるため
編集が終わったら再度、クリックして解除しましょう。
なお初期状態では選択肢は4個までです。
これを増やすためにはデザインモードにして
リストボックスを右クリックし、メニューの中から「プロパティ」を選択します。
![リストボックスを右クリックしてプロパティを選択する図解](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-163.png)
「プロパティ」ウインドウが表示され、「ListFillRange」が選択肢のセル範囲です。
ここの範囲を大きくすると4つ以上の選択肢に対応可能です。
![「プロパティ」の「ListFillRange」で選択肢のセル範囲を設定する図解](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-164.png)
作り方とソースコード(コメントによる解説)
自力で1から作成したり、リストボックスを増やしたい方向けに
手順とソースコードを紹介します。
まず「開発」「挿入」「ActiveXコントール」より
「リストボックス」を選択し配置する場所をクリックします。
(フォームコントロールの方は設定がうまく出来ませんでした)
![「開発」「挿入」「ActiveXコントール」より「リストボックス」を選択する図解](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-166.png)
リストボックスが配置されます。
![リストボックスが配置された状態のキャプチャ](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-167.png)
次に任意の位置に選択肢と選択状態をリンクするセルを用意します。
![選択肢とリンクセルのキャプチャ](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-170.png)
そして「デザインモード」の状態で右クリックし「プロパティ」を選択します。
![「デザインモード」の状態で右クリックし「プロパティ」を選択する図解](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-168.png)
プロパティの内容を変更します。
セルを指定する箇所はマウスで設定出来ません。
アドレスをキー入力する必要がある点に注意が必要です。
プロパティ | 設定値と説明 |
---|---|
オブジェクト名 | マクロ・VBAからアクセスする変数名です。 必要であれば変更します。 |
LinkedCell | 選択肢の状態をリンクするセルです。 Workシートではリンクセル(結合)の位置を設定します。 リストボックスを増やす場合は それぞれ異なるセルを設定。 |
ListFillRange | 選択肢の一覧を設定します。 Workシートに用意した選択肢セルを範囲で記述します。 |
MultiSelect | 「1 - fmMultiSelectMulti」に 変更すると複数選択になります。 |
![プロパティ設定の図解](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-171.png)
プロパティ設定完了後、デザインモードのまま右クリックし「コードの表示」を選択します。
![右クリックメニューからコードの表示を選択する図解](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-172.png)
Visual Basicエディターが立ち上がり、List1_Click()が自動生成されますが、
それは無視してChangeを作成します。
![キャプチャ。Visual Basicエディターが立ち上がりList1_Click()が自動生成。それは無視か削除をしてChangeを作成](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-173.png)
ListBox1_Changeが追加されるので、ここにコードを入力していきます。
![ListBox1_Changeが自動作成される図解](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2019/09/image-174.png)
下記がChangeのコードです。
ListBox1はオブジェクト名によって変わる箇所です。
リストボックスを増やす場合は、ここを適宜変えていく必要があります。
Private Sub ListBox1_Change()
Dim i As Integer ' リストボックスカウンター
Dim j As Integer ' リンクセル(分割)カウンター
Dim 結果 As String ' リストボックスの選択値をカンマ区切りで保存
結果 = ""
j = 1
' リストボックスの全要素をループ。ListCountは要素数
For i = 0 To ListBox1.ListCount - 1
' リンクセル(分割)を一つづつ空白に戻す
'Evaluate…アドレスから範囲を取得。シート名指定(!)がある場合はRangeでなくEvaluate
Evaluate(ListBox1.LinkedCell).Offset(0, i + 1).Value = ""
' リストボックスの要素が選択されているかの判定
If ListBox1.Selected(i) = True Then
' カンマ区切りで選択値を保存
結果 = 結果 & ListBox1.List(i) & ","
' リンクセル(分割)に書き込み
Evaluate(ListBox1.LinkedCell).Offset(0, j).Value = ListBox1.List(i)
j = j + 1
End If
Next i
'リンクセル(結合)に書き込み
Evaluate(ListBox1.LinkedCell).Value = 結果
End Sub
Excelを効率的に習得したい方へ
当サイトの情報を電子書籍用に読み易く整理したコンテンツを
買い切り950円またはKindle Unlimited (読み放題) で提供中です。
![](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2021/12/Excel-640x1024.jpg)
Word-A4サイズ:1,400ページの情報量で
(実際のページ数はデバイスで変わります)
基本的な使い方、関数の解説(140種類)、
頻出テクニックと実用例(109種類)、
XLOOKUP関数、LET関数、シートビュー、LAMBDA関数、スピルなど便利な新機能を紹介。
体系的に学びたい方は是非ご検討ください。
アップデートなどの更新事項があれば随時反映しています。
なお購入後に最新版をダウンロードするには
Amazonへの問い合わせが必要です。