教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAでフォーム内のリストボックスで複数行を選択できるようにする方法

構文

構文は以下の通りです。

リストボックス名.MultiSelect = fmMultiSelectMulti

解説

リストボックス名は、リストボックスの名前です。MultiSelectは、リストボックスで複数の項目を選択できるかを設定します。fmMultiSelectMultiは、複数選択を許可する設定です。この設定にすることで、ユーザーがリストボックス内で複数の項目を選ぶことができるようになります。その他の選択方法についても以下で紹介します。

【選択方法】

定数 内容
fmMultiSelectSingle 0 1つの項目しか選べない単一選択モード
fmMultiSelectMulti 1 Ctrlキーを押さずに連続していない行を複数選択できるモード
fmMultiSelectExtended 2 Ctrlキーを押して連続していない行を複数選択できるモード(※Shiftキーを押しながらクリックすると、現在選択されている行からクリックした行までを連続して選択できる)

プログラミング例

具体的なプログラミング例を紹介します。

Private Sub UserForm_Initialize()
    ' リストボックスに項目を追加
    ListBox1.AddItem "りんご"
    ListBox1.AddItem "バナナ"
    ListBox1.AddItem "ぶどう"
    ' リストボックスで複数選択を可能にする
    ListBox1.MultiSelect = fmMultiSelectMulti
End Sub
Private Sub CommandButton1_Click()
    Dim 選択された項目 As String
    Dim 件数 As Integer
    ' 選択された項目を確認してメッセージボックスに表示
    For 件数 = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(件数) Then
            選択された項目 = 選択された項目 & ListBox1.List(件数) & vbCrLf
        End If
    Next
    MsgBox "選択された項目は:" & vbCrLf & 選択された項目
End Sub

上記のプログラムは、UserForm_InitializeにあるMultiSelect = fmMultiSelectMultiで、リストボックス内で同時に複数の項目を選択できるように設定しています。CommandButton1_Clickでは、ボタンをクリックした際に、選択されたリストボックスの項目をループで確認し、それをメッセージボックスに表示します。Selectedを使って、選択されている項目をチェックしています。

まとめ

リストボックスで複数行を選択できるようにするには、MultiSelectをfmMultiSelectMultiに設定します。これにより、リストボックス内で複数の項目を同時に選択可能となります。また、選択された項目はSelectedを使って確認できます。