繁体   English   中英

在基于 TextBox 值进行搜索后,从工作表中填充用户窗体上的列表框

[英]Populate Listbox on a UserForm from a sheet after search based on a TextBox value

我有一个名为 Sheet1 的工作表,我有一个名为 SearchForm 的用户窗体。 在表单上,我有 2 个名为 TextBox1、TextBox2 的文本框,还有一个 ListBox1。

在工作表上,我有名称、colthing 的类型、入藏号、外观描述以及与问题无关的其他一些列。

当我在 TextBox1 中键入名称并单击“搜索”按钮时,我希望代码使用与键入的名称匹配的值填充列表框。 从中提取数据的列不相邻。 我需要来自 A、B、C、G 的数据。

列表框由 4 个 comluns 组成。

我尝试了这段代码(观看了有关它的视频并从那里复制):

Private Sub Keres_click()

Dim RowNum As Long
Dim SearchRow As Long


RowNum = 2
SearchRow = 2



Do Until Cells(RowNum, 1).Value = ""

   If InStr(1, Cells(RowNum, 2).Value, Me.TextBox1.Value, vbTextCompare) > 0 Then
        Worksheets("Találatok (kereséshez)").Cells(SearchRow, 1).Value = Cells(RowNum, 1).Value
        Worksheets("Találatok (kereséshez)").Cells(SearchRow, 2).Value = Cells(RowNum, 2).Value
        Worksheets("Találatok (kereséshez)").Cells(SearchRow, 3).Value = Cells(RowNum, 3).Value
        Worksheets("Találatok (kereséshez)").Cells(SearchRow, 10).Value = Cells(RowNum, 10).Value
        SearchRow = SearchRow + 1
    End If
    RowNum = RowNum + 1
Loop

    Me.ListBox1.RowSource = "SearchResults"
End Sub

我所做的一切都与视频中的那个人一模一样(添加部分除外),但我在 .RowSource 部分出现错误。 错误是:

无法设置 RowSource 属性。 无效的属性值。

我只是希望它像视频中一样工作。

在这个论坛和其他论坛上查找了一些其他代码,但他们要么没有给出任何结果,要么将整个工作表拉入列表框。

对于 Textbox2 部分,我想进一步缩小结果范围,但我已经在为 TextBox1 苦苦挣扎,所以我没有该部分的代码。

您可以使用以下两种方法之一:

  • 1 /过滤您的数据并将结果复制到工作表中的某个位置(就像您所做的那样)。 然后使用ListFillRange属性(有关详细信息和代码,请参阅这篇文章)来填充您的列表框。
  • 2 /过滤您的数据并将结果直接导入列表框中,每次您有一个符合要求的单元格(我认为最好的解决方案)。 为此使用ListBox.AddItem "data" 查看此页面以获取“多列”部分中的一些代码示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM