[[20080523092354]] 『リストボックスの複数列の制限は?』(ヒロ) ページの最後に飛ぶ

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

 

『リストボックスの複数列の制限は?』(ヒロ)

 いつもお世話になっております。
 リストボックスに、順番がばらばらのデータを、AddItemでセットしたいのですが、
 11項目以上はセットできないのでしょうか?
 今使っているPCにヘルプファイルがなく、検索不可能の為、
 ご存知の方がいましたら教えてください。

            With me.ListBox1
                .AddItem
                .List(k, 0) = 項目1
                .List(k, 1) = 項目2
                .List(k, 2) = 項目3
                .List(k, 3) = 項目4
                .List(k, 4) = 項目5
                .List(k, 5) = 項目6
                .List(k, 6) = 項目7
                .List(k, 7) = 項目8
                .List(k, 8) = 項目9
                .List(k, 9) = 項目10
                .List(k, 10) = 項目11
            End With

 実行すると、List(k,10)のところで、Listプロパティを設定できませんとでます。
 やはり、0〜9までということでしょうか?


そのようですね。(ブッチャ)

リストをセル範囲で設定すれば


 .ColumnCount =11 とでも予め設定しておけばいいような気がするのですが、ダメですか?

 (半平太)

.ColumnCount =11 を設定して、RowSource に名前の定義で設定したものを入れればできないこともないです。 (ブッチャ) 
     

 ただいま帰りました。
 みなさんありがとうございます。
 やはり、AddItemでは無理なようですね・・・・><

 すみません、RowSourceの使い方がいまいち解ってなく、
 また、深く考えたことがなかったのですが、範囲指定以外の使い方も出来るのでしょうか・・・

        With me.ListBox1
            .RowSource = "データ!A2:C" & Data_end
        End With

 こんな感じで使えばいいのかなっていうくらいしか解りません。

 やりたいことは

    項目A 項目1 項目B 項目2 項目C 項目3・・・・
 1
 2
 3

 というデータがあって、表示させたいのは項目1・項目2・項目3・・・・です。
 データの並べ順は、そのままで使いたいのですが、
 どのように、設定したらよいのでしょうか・・・
 宜しくお願いします。


 こんな感じでいけますか。
Private Sub UserForm_Initialize()
Dim i As Long
Dim MyArray(1, 11)
ListBox1.ColumnCount = 12
For i = 0 To 11
    MyArray(0, i) = Cells(1, i * 2 + 1)
    MyArray(1, i) = Cells(2, i * 2 + 1)
Next i
ListBox1.List() = MyArray
End Sub

 行範囲の配列は修正してください。

 (川野鮎太郎)


 なるほど、こういうやり方があるのですね。

 でも・・・ColumnCountで設定できるのだから、
 Listも対応していればいいのに残念ですね^^;

 皆さんありがとうございました。

 >        With me.ListBox1
 >          .RowSource = "データ!A2:C" & Data_end
 >        End With
 ですよね?

 Private Sub UserForm_Initialize()
 Dim ws As Worksheet
 Set ws = Sheets("データ")
 With ListBox1
     .ColumnCount = 3  '<- 12 ?
     .List = ws.Range("a2", ws.Range("a" & Rows.Count).End(xlUp)).Resize(,3).Value
                                                                        '↑12?
 End With
 Set ws = Nothing
 End Sub
 (seiya)

   項目1 項目2 項目3 項目4 項目5 項目6 項目7 項目8
 1
 2
 3
 4
 5

Sheet1 にこんなデータがあるとします。

Private Sub UserForm_Initialize()
Dim 最終行 As Integer
 最終行 = Range("A65536").End(xlUP).Row '最終行を取得

  ActiveWorkbook.NameS.Add Name:="項目", RefersToR1C1"=Sheet1!R1C1:R" & _ 
                                最終行 & "12"      
  ListBox1.RowSource = "項目"               ↑
End Sub                                    列数

こんな感じでどうですか? (ブッチャ)


 >でも・・・ColumnCountで設定できるのだから、
 >Listも対応していればいいのに残念ですね^^;
 ちょっと意味が解りませんけど。
 BJ

 こういう方法もあります。
 最初に入れ物を作るから、追加はできません。
 追加時は、新規に全部作り直す事になります。

 Private Sub CommandButton1_Click()
 For i = 1 To ListBox1.ListCount
   For ii = 1 To ListBox1.ColumnCount
       cnt = cnt + 1
       ListBox1.List(i - 1, ii - 1) = cnt
   Next
 Next
 End Sub

 Private Sub CommandButton2_Click()
 ListBox1.ColumnCount = 5
 End Sub

 Private Sub CommandButton3_Click()
 ListBox1.ColumnCount = 15
 End Sub

 Private Sub UserForm_Initialize()
 Dim 入れ物() As String
         'ColumnCountは、見せる列数です。
 ListBox1.ColumnCount = 15   '最初に設定する事。
 ReDim 入れ物(1 To 10, 1 To 15)
 ListBox1.List = 入れ物
 For i = 1 To 15
   st = st & ";" & 30
 Next
 ListBox1.ColumnWidths = Mid(st, 2)
 Erase 入れ物
 End Sub

コメント返信:

[ 一覧(最新更新順) ]


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