- ベストアンサー
リストボックスの複数データをセルに転記する
よろしくお願いします。 複数表示させたリストの2番目のリストを抜いて 1、3、4、5番目のリストを、 シートAの、C6からF6に転記する With ListBox1 .ColumnCount = 5 .ColumnWidths = "150;0;150;0;0" ↑ .RowSource = "シートA!C6:F" & Worksheets("シートA").Cells(Rows.Count, 5).End(xlUp).Row End With
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは、みっちょです。 セルの途中を1列飛ばした範囲をリストとしたいのでしょうか? それであればセル内容の変更に同期させる必要が無いのであれば、 Dim tV As Variant, LL As Long, tI As Long ListBox1.ColumnCount = 5 ListBox1.ColumnWidths = "150;0;150;0;0" LL = Worksheets("シートA").Cells(Rows.Count, 5).End(xlUp).Row ReDim tV(LL - 6, 4) For tI = 6 To LL tV(tI - 6, 0) = Worksheets("シートA").Cells(tI, 3).Value tV(tI - 6, 2) = Worksheets("シートA").Cells(tI, 4).Value tV(tI - 6, 3) = Worksheets("シートA").Cells(tI, 5).Value tV(tI - 6, 4) = Worksheets("シートA").Cells(tI, 6).Value Next ListBox1.List = tV などとやれば、リストの内容をセルより更新できます。 逆に先にリスト側に出来上がっている内容をセルに移すには、 Dim tV As Variant, LL As Long, tI As Long tV = ListBox1.List LL = UBound(tV) For tI = 0 To LL Worksheets("シートA").Cells(tI + 5, 3).Value = tV(tI, 0) Worksheets("シートA").Cells(tI + 5, 4).Value = tV(tI, 2) Worksheets("シートA").Cells(tI + 5, 5).Value = tV(tI, 3) Worksheets("シートA").Cells(tI + 5, 6).Value = tV(tI, 4) Next などとやれば可能です。こういった感じではいかがでしょう?
その他の回答 (1)
- みっちょ(@RealMichyo)
- ベストアンサー率66% (2/3)
こんにちは、みっちょです。 意図されていることが良く解りませんが、 4項目程度ならベタ打ちしてはどうでしょう? Worksheets("シートA").Range("C6").Value = ListBox1.List(ListBox1.ListIndex, 0) Worksheets("シートA").Range("D6").Value = ListBox1.List(ListBox1.ListIndex, 2) Worksheets("シートA").Range("E6").Value = ListBox1.List(ListBox1.ListIndex, 3) Worksheets("シートA").Range("F6").Value = ListBox1.List(ListBox1.ListIndex, 4) こんな感じでは求める結果は得られませんか?
お礼
ありがとうございます。 出来ましたが、E列目の6行より下で End(xlUp).Rowとしたいのです。 よろしくお願いします。
お礼
つたない説明にも関わらず、丁重にお答えいただきましてありがとうございました。 解決しました。