人生のプチ美学を教えてください!!

よろしくお願いします。

複数表示させたリストの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

A 回答 (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

などとやれば可能です。こういった感じではいかがでしょう?
    • good
    • 0
この回答へのお礼

つたない説明にも関わらず、丁重にお答えいただきましてありがとうございました。
解決しました。

お礼日時:2010/11/15 07:19

こんにちは、みっちょです。



意図されていることが良く解りませんが、
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)

こんな感じでは求める結果は得られませんか?
    • good
    • 0
この回答へのお礼

ありがとうございます。

出来ましたが、E列目の6行より下で End(xlUp).Rowとしたいのです。
よろしくお願いします。

お礼日時:2010/11/13 18:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報