リストボックスで複数選択したデータを横方向へ入力するには?

解決


いく  2006-11-04 03:59:06  No: 133987

リストボックスで複数選択したデータをCommandButtonを押すごとに
データの入っていない最終行に横に追加していく方法を教えて下さい

複数選択のデータを縦に入れるというのはわかったのですが、
横に並べて、かつ最終行に追加していく方法がわかりません。
よろしくお願いします。

>1
>5
  9
>13
  16
>23

(>選択データ)
↑のようにリストボックスで選択したデータを
↓のようにすでにデータの入っている行に

(1行目)  2  5   7   14
(2行目)  4  10  12  15
   |
(最終行) 3  14  16  21

↓のように追加出来れば嬉しいのですが…

(最終行) 3  14  16  21
(追加行) 1   5  13  23


VBレスキュー(花ちゃん)  URL  2006-11-04 16:26:42  No: 133988

>↓のように追加出来れば嬉しいのですが…

>(最終行) 3  14  16  21
>(追加行) 1   5  13  23

最終行までは、入力及び表示できているのでしょうか?
本来は、MSFlexGrid 等のグリッド系のコントロールを使用すべきかと。
どうしても、リストボックスでというなら、下記のサイトの
http://hanatyan.sakura.ne.jp/vbhlp/listcont.htm の 
複数の項目を指定位置に揃えて表示(143)  や Win32 API 関数を使って
リストボックスに複数の任意の位置にタブストップを設定すればできます。
http://hanatyan.sakura.ne.jp/vbhlp/Sampleitiran.htm の No.193 )


いく  2006-11-04 23:30:36  No: 133989

早速のお答えありがとうございます。

説明たらずですみません、
リストボックス内で複数選択したデータを、
エクセルに横に追加していきたいのです。

http://www.geocities.jp/happy_ngi/YNxv9g042.html
↑のリストボックスの複数選択された値を取得
というのを参考にリストボックスを設定しようと思ったのですが、
この場合、複数選択されたデータは縦に格納されるので、
これを利用して横に格納できればと思うのですが…。

どうかよろしくお願いします。


いく  2006-11-05 03:10:47  No: 133990

色々やってみた結果、↓のようにすると横に入力できました。

Private Sub CommandButton1_Click()
For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) Then
        e = e + 1
        Cells(1, e) = ListBox1.List(i)
    End If
Next i
End Sub

で、出来ればこれを、特定のセルへの入力ではなく、
フォームを出す前にアクティブにしたセルへの入力にしたいのですが、
もしご存じのかたおられましたらよろしくお願いします。


いく  2006-11-05 03:17:58  No: 133991

あ、

Cells(1, e) = ListBox1.List(i)

Activecell(1, e) = ListBox1.List(i)

に変えたら出来ました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加