リストボックスで複数列の複数選択項目を取得する

ユーザーフォームリストボックスコマンドボタンを配置し、シートに入力されたデータをリストボックスに追加、ボタンをクリックすると複数列の複数選択されたリスト項目を取得します。
リストボックスで複数選択できるようにするには、プロパティで「MultiSelect」を「1-frmMultiSelectMulti」か「2-frmMultiSelectExtended」にします。
リストボックスで複数列にするには、プロパティの「ColumnCount」に列数を入力します。



Homeに戻る > Excel コンボボックスのTipsへ

ユーザーフォームの作成画面

新規ユーザーフォームに下記のコントロールを配置します。
  • ListBox1 : MultiSelectプロパティを「1-frmMultiSelectMulti」に設定、ColumnCountを「4」に設定
  • CommandButton1 : Captionプロパティに「選択項目の取得」を入力
ユーザーフォームにリストボックスとコマンドボタンを配置する

フォーム上を右クリックし、「コードの表示」をクリックします。
プロシージャを「Initialize」に変更し、コードを入力します。
次に、CommnadButton1_Clickイベントに、コードを入力します。
イベントコードの入力

完成したユーザーフォームです。
シートに入力されたデータから、リストボックスのリストが作成されています。
リストボックスの列幅は無調整です、実際に使うには調整し見やすくします。
シートデータをリストボックスに追加

リストボックスで複数行を選択し(青色に反転している行が選択行です)、「選択項目の取得」ボタンをクリックします。
すると選択されている項目データがMsgboxで表示されます。
選択項目を取得し表示

実行VBAコード

Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim s As String
    
    s = ""
    'リストボックスのリスト数をループ
    For i = 0 To ListBox1.ListCount - 1
        '選択行ならば
        If ListBox1.Selected(i) = True Then
            'リスト項目の取得
            s = s & ListBox1.List(i, 0) & " "
            s = s & ListBox1.List(i, 1) & " "
            s = s & ListBox1.List(i, 2) & " "
            s = s & ListBox1.List(i, 3) & vbCrLf
        End If
    Next i
    '選択行の内容を表示
    MsgBox "選択されたリスト" & vbCrLf & s
End Sub

Private Sub UserForm_Initialize()
    Dim i As Integer
    Dim StartRow As Long
    Dim EndRow As Long
    
    '開始行
    StartRow = 4
    '最終行の取得
    EndRow = Worksheets("Sheet1").Range("B65536").End(xlUp).Row
    '開始行から最終行までループ
    For i = StartRow To EndRow
        'リストボックスに追加
        ListBox1.AddItem i - StartRow
        'リストボックスに各列を追加
        ListBox1.Column(0, i - StartRow) = Worksheets("Sheet1").Cells(i, 2).Value
        ListBox1.Column(1, i - StartRow) = Worksheets("Sheet1").Cells(i, 3).Value
        ListBox1.Column(2, i - StartRow) = Worksheets("Sheet1").Cells(i, 4).Value
        ListBox1.Column(3, i - StartRow) = Worksheets("Sheet1").Cells(i, 5).Value
    Next i
End Sub

Homeに戻る > Excel コンボボックスのTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved