2016-05-04 13 views
0

私は、2つのシート間の名前を一致させ、リストボックスに表示するExcelマクロを作成しています。名前の一致だけでは問題はありませんが、シートの1つから他のデータを取り込もうとすると、もうループしていないように見えます。ここでマルチカラムリストボックスに、私が望むデータが表示されていませんか?

は私のコードです:

Set matchedartistcell = Worksheets("Lots").Cells(curcell.Row, columnofregion) 
matching_artist = matchedartistcell.Value 
For i = 1 To maxmaster 
    If Trim(Worksheets("Master").Cells(i, 1)) = Trim(matching_artist) Then 
     ListBox1.AddItem (Worksheets("Master").Cells(i, 2)) 
     ListBox1.List(0, 1) = Worksheets("Master").Cells(i, 4) 
     ListBox1.List(0, 2) = Worksheets("Master").Cells(i, 5) 
     ListBox1.List(0, 3) = Worksheets("Master").Cells(i, 6) 
     End If 
Next i 

だから基本的には、最初のカラムには、名前のリストを示しています...しかし、最初と同じ行の最後の試合のための第二、第三、第四列のデータを示します(もしそれが意味があれば)

私はそれが欲しいと思っている方法でループしていないように感じますが、私の人生のために私はできません理由を理解...どんな助けも大いに感謝されるでしょう! !

ありがとうございます!明確にするため

EDIT:

私はテストワークブック

これを使用して、より良い問題を記述するためにいくつかの写真を含めていて、ワークシート「マスター」 enter image description here

のアーティストの一例です

これは私がマクロを実行しているワークシートの例です( 'たくさん') enter image description here

私はartwのマクロを実行するとハンナ・スミスORKは、私はリストボックスが

マーク・スミスのイギリス1940 1999
アダム・スミスオーストラリア1901 1980
ハンナ・スミスカナダ1982

のようなものを見て期待しかし、それはこの enter image description here

を返します。

マーク・スミスにはハンナ・スミスの国籍と日付が与えられており、アダム・スミスやハンナ・スミスには追加情報がありません。

+0

をあなたはそれを期待していませんか?コードをデバッグしようとしましたか?いくつかのブレークポイントを入れて変数の値をチェックしたのでしょうか?また、いくつかのメッセージボックスや 'Debug.Print i& :「ワークシート( "マスター")セル(i、1))と "トリム(マッチング_アーティス)"を比較し、その出力を見直して、 – Ralph

+0

ヒヤ!私はこの問題についての詳細を説明するために私の投稿を編集しました、なぜ私はその気持ちを持っていますか?コードはうまく動くので、問題がどこにあるのかはわかりません。私はあなたが今言ったことを試してみるでしょう、提案に感謝します! – MBot93

答えて

0

問題は、常に(コード内で)ListBoxの最初の行を更新していることです。 iは1からそのシートの最後の行に移動しますが、常にListBox1.List(0, someColumn)を更新しています。 。リストボックスの最初の行であるので、あなたは常に更新されている行0(

は、この試してみるとそれが動作するかどうか私に教えて:あなたはそれがないことを、この「感覚」を与える何

Set matchedartistcell = Worksheets("Lots").Cells(curcell.Row, columnofregion) 
matching_artist = matchedartistcell.Value2 
For i = 1 To maxmaster 
    If Trim(Worksheets("Master").Cells(i, 1)) = Trim(matching_artist) Then 
     ListBox1.AddItem (Worksheets("Master").Cells(i, 2)) 
     ListBox1.List(ListBox1.ListCount - 1, 1) = Worksheets("Master").Cells(i, 4) 
     ListBox1.List(ListBox1.ListCount - 1, 2) = Worksheets("Master").Cells(i, 5) 
     ListBox1.List(ListBox1.ListCount - 1, 3) = Worksheets("Master").Cells(i, 6) 
    End If 
Next i 
+0

ああ、それは意味があることを見て...私はそれを叩いて、それは完全に動作します!あなたはそんな星です、ありがとう! – MBot93

関連する問題