プルダウンリストから1つ選んではセルを移動し、また1つ選ぶ。この繰り返しで、気がつけば30分が経過。集中力が切れて、最後には間違ってしまっていた……。
こんな経験はありませんか?
「もっと一気に選べたらいいのに!」その悩みを劇的に解決するのが、Excel VBAの「ListBox(リストボックス)の複数選択」機能です。
今回は、IT作業に苦手意識がある方でも、コピペで明日から実務に使える「リストボックス」の作成手順を分かりやすく解説します。
リストボックスの仕組みは「お弁当の注文表」と同じ
複数選択のリストボックスは「お弁当の注文表」に例えると分かりやすいです。
- リストボックス: おかずのメニュー表
- 複数選択の設定: 「唐揚げと卵焼きと鮭、全部にチェックを入れていいですよ」というルール
- VBAコード: 「チェックが入ったおかずだけを、お弁当箱(セル)に詰めてね」という指示
一見難しそうに見えるシステムですが、構造自体はこれほどシンプルな仕組みで成り立っています。
ステップ1:操作画面の作成(ユーザーフォーム)
まずは、Excelの「開発」タブから「Visual Basic」を開き、ユーザーフォームを挿入します。そこに「リストボックス」を配置してください。
ここが最も重要なポイントになります。配置したリストボックスのプロパティウィンドウを開き、「MultiSelect」という項目を「1 – fmMultiSelectMulti」に変更してください。
この設定を行うだけで、一覧から複数の項目を同時に選択できるようになります。
【補足】MultiSelectプロパティ設定の違い
| 設定値 | プロパティ名 | 操作方法と特徴 |
| 1 | fmMultiSelectMulti | クリックするだけで、個別にON/OFFを切り替えます。通常のチェックボックスのような挙動になります。 |
| 2 | fmMultiSelectExtended | Shiftキーを押しながらクリックで「範囲選択」、Ctrlキーを押しながらクリックで「飛び飛びの選択」ができます。Windowsのエクスプローラーでファイルを選ぶときと同じ挙動になります。 |
ステップ2:プログラムの記述(コードの貼り付け)
続いて、画面で選択した項目をセルに書き出すためのプログラムを記述します。
ユーザーフォーム内に「コマンドボタン」を1つ作成し、フォームをダブルクリックして以下のコードをそのまま貼り付けてみてください。
Private Sub UserForm_Initialize()
' リストボックスをいったん綺麗にします
ListBox1.Clear
' 複数選択を可能にする設定(念のためコードでも指定しています)
ListBox1.MultiSelect = fmMultiSelectMulti
' サンプルデータを10個追加します
With ListBox1
.AddItem "東京本社"
.AddItem "大阪支社"
.AddItem "名古屋営業所"
.AddItem "福岡支店"
.AddItem "札幌出張所"
.AddItem "仙台オフィス"
.AddItem "広島営業所"
.AddItem "横浜ラボ"
.AddItem "京都開発センター"
.AddItem "沖縄サテライト"
End With
End Sub
' --- コマンドボタンをクリックしたときの処理(最終行の下へ追記します) ---
Private Sub CommandButton1_Click()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim i As Long
Dim r As Long
' A列の最終行を求め、その次の行(追記開始行)を設定します
r = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
If ws.Cells(r, 1).Value <> "" Then
r = r + 1
End If
Dim hasSelection As Boolean
hasSelection = False
' リストボックスの全項目をループで確認します
For i = 0 To ListBox1.ListCount - 1
' 項目が選択されているか判定します
If ListBox1.Selected(i) Then
ws.Cells(r, 1).Value = ListBox1.List(i)
r = r + 1
hasSelection = True
End If
Next i
' 選択状態に応じたメッセージ通知です
If Not hasSelection Then
MsgBox "項目が選択されていません。", vbExclamation
Else
MsgBox "追記が完了しました。", vbInformation
End If
End Sub
(「コマンドボタン」の表示を「OK」に変更しています)
複数選択リストを上手に運用するための注意点
複数選択リストは非常に強力なツールですが、運用の際には少しだけ注意が必要です。
選択項目を多くしすぎると画面が文字で埋め尽くされて、どれを選んだか分からなくなり、逆に作業が遅くなる要因になります。
「便利さ」は「使いやすさ」とセットです。項目が多いときは、事前に絞り込み機能をつけたり、リストを整理したりすることが大切です。
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント