[[20081227210511]] 『Listボックスに格納するデータについて』(くら) ページの最後に飛ぶ

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

 

『Listボックスに格納するデータについて』(くら)

ListBoxに表示するリストとして、列名を表したいのですが、リストの10列目で実行時エラー"380" Listプロパティが設定出来ませんと出てしまいます。
25列まで表示したいのですが。どうしていいかわかりません。どなたかご教授お願いします。

リストに表示する方法は他にもあると思いますが、この方法を選んだのはこの後いらないリストを削除したいので選びました。よろしくお願いします。

 sub sample()

 Dim i As Long
 Dim j As Long
 Dim t As Long

 Userform3.ListBox1.Clear

 t = Worksheets("Sheet1").Cells(Rows.Count, 3).End(xlUp).Row

 With Worksheets("sheet1")
  For i = 3 To t
   Userform3.ListBox1.AddItem .Cells(i, 1).Value
   Userform3.ListBox1.List(j, 1) = .Cells(i, 2).Value
   Userform3.ListBox1.List(j, 2) = .Cells(i, 3).Value

     中略

    Userform3.ListBox1.List(j, 10) = .Cells(i, 11).Value'ここでエラー
 j = j + 1
 Next i
 End With

 If Not Userform1.TextBox5.Text = "" Then
   For i = Userform3.ListBox1.ListCount - 1 To 0 Step -1
    If Not UCase(Userform3.ListBox1.List(i, 1)) = _
           UCase(Userform3.TextBox5.Text) Then
       Userform3.ListBox1.RemoveItem (i)
   End If
 Next i
  End If

 If Not Userform3.TextBox5.Value = ",," Then
   For i = Userform3.ListBox1.ListCount - 1 To 0 Step -1
    If Not Userform3.ListBox1.List(i, 0) = _
       Userform3.ListBox2.Value Then
       Userform3.ListBox1.RemoveItem (i)
   End If
 Next i
   End If
 End Sub

 ColumnCountを10に設定していませんか?
その場合、実行時エラー番号は381かもしれませんが。
リストボックスのインデックスは0から始まるので、
Userform3.ListBox1.List(j, 10) = .Cells(i, 11).Value というコードと 
「リストの10列目で実行時エラー」という質問の文章は矛盾します。
(コードは11列目を設定しようとしている)
(みやほりん)(-_∂)b

 みやほりんさんありがとうございます。

 ご指摘の通りリストの11列目でエラーが出てしまいます。間違えていました。すみ
 ません。
 このエラーを回避するにはどの様な方法があるのでしょうか?
 ご教授お願いします。


 >ColumnCountを10に設定していませんか?
まずはこれを確認してください。
(みやほりん)(-_∂)b


 みやほりんさんありがとうございます。

 ListBoxプロパティのColumnCountは25に設定してあります。

 よろしくお願いします。

 私も知りませんでしたが、ヘルプには次の記載がありました。
////////////////////////////////////////////////////
表示可能な列がすべて表示されます。非連結データソース
の場合は、最大 10 列 (0 〜 9) までの制限があります。
////////////////////////////////////////////////////
 
必要なデータを先にシートなどに転記して、
完成したリストをRowSourceプロパティに設定する。
(みやほりん)(-_∂)b


    Dim i As Long
    Dim j As Long
    Dim t As Long
    Userform3.ListBox1.ColumnCount = 25
    Userform3.ListBox1.Clear
    With Worksheets("sheet1")
       t = .Cells(.Rows.Count, 3).End(xlUp).Row
       Userform3.ListBox1.List = .Range(.Cells(1, 1), .Cells(t, 25)).Value
    End With

 このようにしてみては?

 但し、

 >列名を表したいのですが

 が各列の項目名を表示したいということなら、Rowsourceプロパティを使わなくてはなりませんが・・・。

 ichinose


 ichinoseさん

 ありがとうございます。
 思い通りのマクロが完成しました。
 感謝!感謝!です。

コメント返信:

[ 一覧(最新更新順) ]


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