
リストボックスの項目を複数行選択できるようにする設定

リストボックスはリスト(項目)が複数表示された中から1つ選択できるのですが、2つ以上選びたい時に同じ作業を2回以上繰り返すのは面倒だと思いませんか?
1つのリストボックスに表示されたリスト(項目)をまとめて複数選択できたら便利なので、初期設定を変更して複数選択できるように設定をしましょう。
リストボックス複数行対応設定変更
リストボックスで複数行選択できるように設定を変更する方法は、リストボックスのプロパティウィンドウで設定変更する方法と、必要な時だけ複数行選択できるようにするVBAコードで記載する2つの方法があります。
プロパティウィンドウで設定変更
まずは簡単で基本的な複数行選択できるようにする設定変更方法で、リストボックスの様々な設定ができるプロパティウィンドウで設定を行います。

値 | 設定 | 内容 |
0 | fmMultiSelectSingle | 初期設定で1つだけ選択可能 |
1 | fmMultiSelectMulti | クリックだけで複数選択可能 |
2 | fmMultiSelectExtended | Shiftキーを押しながらクリックで複数選択可能 |
個人的にはShiftキー押しながら選択するのが面倒なのでfmMultiSelectMultiを使って、複数選択できるように設定しています。
コマンドボタンやイニシャライズにVBA設定
リストボックスのプロパティ設定以外でコマンドボタンや、ユーザーフォームが表示された時に自動的設定を行うイニシャライズにVBAコードを記載する方法もあります。
この方法の利点は、同じリストボックスを使っていながら通常複数選択できるようになっているのに、ある作業の時だけ1つしか選べなくなるよにボタンにより設定できる点です。
ここでは、ユーザーフォーム1のリストボックス1をShiftキーを押さずに複数行選択できるように、イニシャライズに記載している例です。
Private Sub UserForm_Initialize()
With UserForm1.Controls(“ListBox1”)
.MultiSelect = 1
End With
End Sub
- ユーザーフォームイニシャライズイベントを実行する
- ユーザーフォーム1のリストボックス1について以下の処理をする(Withステートメント)
- 複数行選択を1で設定する(fmMultiSelectMulti)
- Withステートメント終了
- マクロ記録終了
この方法を使って.MultiSelect = 0で設定しておいてコマンドボタンを押せば、1つしか選択できなくなりますので使い分けできますよ。
ここで使用したUserForm_Initializeはとても便利なので高頻度で使用していますので、ぜひマスターしてくださいね。

そして、複数行選択したらセルに表示・記載すると思うので、下記にセルに表示・記載方法をまとめましたので、よろしかったらご覧くださいませ。
