このフォーラムでこれまでに似たようなケースを見たことがありますが、私の正確な問題の適切な解決策は見られませんでした。リストボックスVBAでマルチカラムデータの複数のエントリを表示する
基本的に私は、データテーブルのデータを管理するリストボックスを持つユーザーフォームを持っています。各「エントリーID」(列Aの)に結び付けられた複数のエントリーがあります。私がsearchboxの "エントリーID"を検索すると、リストボックス内の各エントリーの列AからJまでのすべての関連するエントリーを見たいと思います(したがって、コードはループして複数の行を見つけ、リストボックスへの各行の複数の列、私は苦労していると思います)。
私はここにフォーラムで同様のケースで見つけたコードの一部を採用しているが、複数の列をコピーするように見えることはできません。
Private Sub cmdFind_Click()
Dim sht As Worksheet
Dim lastrow As Variant
Dim strSearch As String
Dim aCell As Range
Dim row_number As Integer
Dim item_in_review As Variant
Set sht = ActiveWorkbook.Sheets("a")
lastrow = sht.Range("A" & Rows.Count).End(xlUp).Row
strSearch = txtSearch.Text
Set aCell = sht.Range("A1:A" & lastrow).Find(What:=strSearch, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not aCell Is Nothing Then
GoTo wfrefvalid
Else
MsgBox "Oops! That Work File does not exist. Please try again.", Title:="Try again"
txtSearch.Value = ""
End If
Exit Sub
wfrefvalid:
row_number = 3
'clears the listbox so that you have dont have a continuously growing list
lstSearch.Clear
Do
DoEvents
row_number = row_number + 1
item_in_review = sht.Range("A" & row_number)
If item_in_review = txtSearch.Text Then
lstSearch.AddItem sht.Range("A" & row_number & ":J" & row_number)
End If
Loop Until item_in_review = ""
End Sub
私はこれではないかなり確信しています私がやりたいことをやっている正しい方法ですが、私は全く同じような事例を見つけることができません。
すべてのヒントに非常に感謝します。
編集:@braXはランタイムエラー(コードが更新されました)を削除するのに役立ちましたが、リストボックスにデータがアップロードされていません...おそらく、私は "行" -loopまたはaddItem関数を正しく参照していません彼らのうちのどれが確かですか?
はあなたに感謝しているはずです。この
lstSearch.AddItem Sheets("a").Range("A:J" & row_number)
を持っています!私は自分のコードを修正し、少なくともエラーを削除したが、データはリストボックスにアップロードされませんでした。エラーハンドラは、IDが存在しない場合には認識しますが、IDが存在する場合(つまり、人口などがない場合)は何も起こりません。私は技術的にあなたが私が持っていた特定のエラーに答えたと思うので、私はあなたに "答え"のポイントを与えますが、あなたは私のリストボックスにデータを挿入するためのポインタがありますか?前もって感謝します! Dim Arr()As Variant Arr = Range( "E6:H6") ListBox1.List = –
最初に範囲を配列に変換してから、 '.AddItem'の代わりに' Arr – braX
良いアイデアのように聞こえます。もう1つの最後の質問:私の配列は変化し、場合によっては不連続な範囲になるため、配列にデータを追加するのにどの構文を使うのが最適でしょうか?特に、AのIDが検索条件に一致する場合に基準がなることを考慮してください。私はおそらくあなたの指針のおかげでそこから自分自身を取ることができました。 –