[[20140918104204]] 『Listboxの内容を全部配列に入れたい』(あすな) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Listboxの内容を全部配列に入れたい』(あすな)

 度々ですみませんが、また教えてください。

 UserForm1で色々選択し、確認ボタンを押す度、登録準備前として
 UserForm2内のListBox1に表示されます。

 【UserForm2.ListBox1】
 日付 発注先 金額・・・
 10/1 ○社 10,000
 10/15 ×社   5,000・・・(ColumnCountは8です)

 この表示されているものを全て配列に入れたいです。

 ListBox1に表示させた時のデータを使えればいいのですが、
 表示後削除することもあり、このデータを操作するのは断念しました。
 そこで、削除や修正が終わった後のListBox1内に表示されているデータを、
 改めて配列に入れる(戻す?)ことにしました。

 Private Sub 登録_Click()

    With Me.ListBox1
        If .ListCount > 0 Then
            ReDim day(.ListCount - 1)
            ReDim buf(.ListCount - 1)
            ReDim order(.ListCount - 1)
            ReDim comp(.ListCount - 1)
            ReDim job(.ListCount - 1)
            ReDim typ(.ListCount - 1)
            ReDim FeeT(.ListCount - 1)
            ReDim invM(.ListCount - 1)

                For i = 0 To .ListCount - 1
                    day(i) = .List(i, 0)
                    buf(i) = .List(i, 1)
                    order(i) = .List(i, 2)
                    comp(i) = .List(i, 3)
                    job(i) = .List(i, 4)
                    typ(i) = .List(i, 5)
                    FeeT(i) = .List(i, 6)
                    invM(i) = .List(i, 7)
                Next i
       End If
    End With

 1個ずつ確認したら、最後のEnd Ifになると、全てのデータが空っぽになってしまいました。
 色々探してもやり方がわからずお手上げです。
 ご教示宜しくお願いいたします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


セルに書き出してみてはどうでしょうか?
(Hara) 2014/09/18(木) 12:36

 Haraさん
 最終的にセルに書き出すために、配列に入れたいのです。

(あすな) 2014/09/18(木) 14:46


 単純に
 Dim x
 x=Me.ListBox1.List

 じゃないの?
(seiya) 2014/09/18(木) 15:03

 衝突したけど、補足で

 出力用にするなら、
 x = Application.Transpose(Application.Transpose(.List))

 で1からの配列になるけど・・・
(稲葉) 2014/09/18(木) 15:05

 Transpose?

 Range("a1").Resize(ubound(x)+1,ubound(x,2)+1).value = x

(seiya) 2014/09/18(木) 15:27


 補足じゃないですね!
 いつも0からの配列を書き込むときこうしてたので、すみません・・・
(稲葉) 2014/09/18(木) 15:43

 seiyaさん、稲葉さん、ありがとうございます。 
 すみません、あとの処理も先に書いておくべきでした。

 8個めの要素に請求月が入ります。 
 >invM(i) = .List(i, 7)
 そしてこの数字によってシート名を指定し、1行ずつ振り分けてます。

  With regWB.Sheets(invM(i) & "月")
                LLR = .Cells(.Rows.Count, 1).End(xlUp).Row + 1         
                .Cells(LLR, 1).Value = day(i)
                .Cells(LLR, 3).Value = UN
                .Cells(LLR, 7).Value = buf(i)
                             ・
                   ・
 なので、seiyaさんすみません、
  x=Me.ListBox1.List
 このxを上のように振り分けたいのですが、xをどうすればいいかわかりません。
 図々しくてすみませんが、教えてください。
 よろしくお願いいたします。             

(あすな) 2014/09/18(木) 17:59


 For i = LBound(x) to UBound(x)
     With regWB.Sheets(x(i,7) & "月")
         LLR = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
         .Cells(LLR, 1).Value = x(i,0)
         .Cells(LLR, 3).Value = UN
         .Cells(LLR, 7).Value = x(i,1)

 こんなこと?

(seiya) 2014/09/18(木) 18:37


 seiyaさんありがとうございます!!
 できましたー!!!!

(あすな) 2014/09/18(木) 19:16


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.