ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュのリストボックスの複数行列表示について

  • mixiチェック
  • このエントリーをはてなブックマークに追加
テキストボックスに入力した値をワークシート商品データと比較して(mで商品データを繰り返し参照してます)、その値があった場合、リストボックス3に表示するプログラムを作りたくて色々試したのですが、どうしてもうまくいきません。
理想的には、リストボックスの(0,0)に商品と(0,1)に値段に値を入力した後、1行ずらして(1,0)(1,1)…と商品リストを表示していきたいのですが、(0,0)と(0,1)しか表示されず行が追加されていきません。
i=i+1
じゃ追加されないんでしょうか??
プログラムも初心者でめんどくさいやり方してると思いますが、とりあえず動くようにしたいのでよろしくおねがいします。

Private Sub TextBox3_Change()
Dim m As Integer
Dim i As Integer
Dim j As Integer
i = 0
Dim mylist() As Variant

Worksheets("データ").Cells(3, 1) = TextBox2.Text
Worksheets("データ").Cells(1, 2) = TextBox3.Text

For m = 2 To 131


If Worksheets("商品データ").Cells(m, 2) = TextBox3.Text Then


ReDim mylist(10, 1)
ListBox3.ColumnCount = 2
ListBox3.ColumnWidths = "150;50"

mylist(i, 0) = " " & Worksheets("商品データ").Cells(m, 3)
mylist(i, 1) = " \ " & Worksheets("商品データ").Cells(m, 5)
i = i + 1

ListBox3.List = mylist

Label5.Caption = Worksheets("商品データ").Cells(m, 3)
Label7.Caption = Worksheets("商品データ").Cells(m, 5)
ListBox1.AddItem " " & Worksheets("商品データ").Cells(m, 3) + vbTab + "名前" '+ vbTab + "電話番号" '(Worksheets("商品データ").Cells(m, 3))
ListBox2.AddItem (Worksheets("商品データ").Cells(m, 5))
Worksheets("データ").Cells(1, 1) = Worksheets("データ").Cells(1, 1) + Worksheets("商品データ").Cells(m, 5)

TextBox3.Text = ""

Label21.Caption = Worksheets("データ").Cells(1, 1)
Worksheets("データ").Cells(6, 1) = Worksheets("データ").Cells(1, 1) * 0.05
Worksheets("データ").Cells(7, 1) = Application.RoundDown(Worksheets("データ").Cells(6, 1), 0)
Label9.Caption = Worksheets("データ").Cells(7, 1)
Worksheets("データ").Cells(8, 1) = Label21.Caption
Label12.Caption = Worksheets("データ").Cells(8, 1) + Worksheets("データ").Cells(7, 1)
Worksheets("データ").Cells(9, 1) = Label12.Caption

End If

Next m

End Sub

コメント(2)

この問題、
m=2i=0
からスタートしてFORループごとに、mもiも1ずつあがっていきます。
常にi=m-2が成り立っています。(※)
mは2〜131なので、iは0〜129です。
ところが
ReDim mylist(10, 1)
となっています。
iがこの「10」を超えてしまうためエラーになっていると思われます。
この10の値を129以上に変えればエラーはおきなくなると思います。


(※)iを定義する必要はなくって、mで代用できますよ
For〜Nextの中の、ReDim mylist(10, 1)で
配列を再定義しているので、せっかく入れたデータを消していますよ

また、ListBox3.List = mylist ですけど
せっかく配列にListデータをセットしているのですから
Next mの後にした方がいいです

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。