- ベストアンサー
【VBA】for each文でListbox値取得
VBA7.1でfor each文を使い、Listbox(Lst1)の全ての値を 取得したいと思っています。 For Each 変数 In コレクションや配列 のコレクションや配列には何を指定したらよいでしょうか。 よろしくお願いいたします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
これでいいのかどうか今ひとつわかりませんが Dim c As Variant With ListBox1 For Each c In .List If Not IsNull(c) Then Debug.Print c End If Next End With For Each ではなく普通にFor Next でいかがでしょう。 Dim i As Long With ListBox1 For i = 0 To .ListCount - 1 Debug.Print .List(i) Next End With
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
既に回答は出ていますが、 ーー 質問が荒っぽいように思う。特に下記の点。 ・.MultiSelect =が必要なはず。 ・選択決定がいつ終わったか、のタイミングを知らせる仕組み ーー Sheet1のA,B,C列にデータソースがあるとして 氏名 年齢 住所 山田 22 A 木村 34 B 今井 21 C 佐藤 31 D 岸田 46 E 河野 47 F 佃 51 G 君村 38 H 岡野 31 I 森 49 J ーーーー Private Sub UserForm_Initialize() Dim sh As Worksheet Set sh = Worksheets("Sheet1") With Me.ListBox1 .ColumnCount = 3 .ColumnWidths = "50;120;50" .ColumnHeads = True .MultiSelect = fmMultiSelectMulti .ListStyle = fmListStyleOption .RowSource = sh.Range("A2", sh.Cells(Rows.Count, 2).End(xlUp)).Address End With End Sub のように、.MultiSelect = ・・が必要なはず。 ーー また、複数選択する仕組みを採る以上、選択決定が操作者側でいつ終わったか、知らせるために何か仕掛けが要るのでは。ここでは、コマンドボタンを1つ設けて使うことにする。 ーー Private Sub CommandButton1_Click() With UserForm1.ListBox1 k = 1 For i = 0 To .ListCount - 1 If .Selected(i) = True Then Cells(k, "D") = .List(i) k = k + 1 End If Next i End With End Sub D列セルに、選択されたリストを掲示することにした。 ーー WEB記事でもFor Each In XXXはあまり出てこないようだから、 上記 .ListCount でやった。
お礼
ありがとうございます。 複数選択はしません。 リストの内容を他のリストボックスに 全部表示することを考えていました。
お礼
ありがとうございます。 おっしゃる通り普通にFor Nextでできました。