在列表框VBA中搜索并显示多列数据的多个条目

时间:2017-06-20 09:12:14

标签: excel vba excel-vba search listbox

我之前在这个论坛上看过类似的案例,但是我没有看到解决我的确切问题的方法,所以在这里...... [/ p>

基本上我有一个带有列表框的用户表单,用于管理数据表中的数据。有多个entires与每个"条目ID"相关联。 (在A栏)。当我搜索"条目ID"在searchbox中我希望在列表框中看到所有关联的条目,每个条目的列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函数正常但不确定它们中的哪一个?

1 个答案:

答案 0 :(得分:0)

您缺少A列的行号: 你有这个

lstSearch.AddItem Sheets("a").Range("A:J" & row_number)

看起来应该更像这样

lstSearch.AddItem Sheets("a").Range("A" & row_number & ":J" & row_number)