リストボックスにデータを登録する
エクセルVBAのユーザーフォームのリストボックスに任意のデータを追加する方法です。
関数、メソッドなど
ListBoxコントロールのAddItemメソッドか、RowSourceプロパティかListプロパティを使用します。1.AddItemメソッド
AddItemはListBox.AddItem 追加する値で記述します。コード
Private Sub UserForm_Initialize()
    
    ListBox1.AddItem "A"
    ListBox1.AddItem "B"
End Sub
こんな感じで登録されます。
ワークシート上のセルを追加する場合は
Private Sub UserForm_Initialize()
Dim i As Long
    With ListBox1
         For i = 2 To 10
            .AddItem ActiveSheet.Cells(i, 1)
        Next i
    
    End With
End Sub
一列目(=A列)の1~10行目の値がリストに追加されました。
2列以上にする場合は、ColumnCountプロパティを指定し、AddItemした後にListプロパティで編集します。
コード
Private Sub UserForm_Initialize()
Dim i As Long
    With ListBox1
         .ColumnCount = 3
         For i = 2 To 10
             .AddItem ""
             .List(.ListCount - 1, 0) = ActiveSheet.Cells(i, 1)
             .List(.ListCount - 1, 1) = ActiveSheet.Cells(i, 2)
             .List(.ListCount - 1, 2) = ActiveSheet.Cells(i, 3)
        Next i
    
    End With
End Sub
Listプロパティは(行,列)形式で0から始まっています。
(1行目の1列目はList(0,0)、1行目2列目はList(0,1)・・・)
2.RowSourceプロパティ
コード
Private Sub UserForm_Initialize()
Dim r As Long
r = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
    With ListBox1
         .ColumnCount = 3
        .RowSource = "Sheet1!A2:C" & r
    
    End With
End Sub
r>
関連・類似ページ
ListViewコントロールの方が見せ方やイベント、などの勝手がよくて使いやすいのですが、64bit版のofficeだとサポートされていません。なので、もし64bitのofficeになってしまってリストビュー的なことがやりたい場合はListBoxで戦うしかなさそうです。
Officeは特別な理由が無い限り32bitがいいと思います・・・。(64bitの方が速度などパフォーマンスが向上するという噂もありますが。)
ListViewコントロール