Excel VBA填充列表框,其中包含搜索的动态范围

时间:2016-08-16 09:17:50

标签: excel vba excel-vba

我的困难是:我有一个Excel电子表格,我需要一个UserForm ListBox,根据以前的用户输入填充一些数据行。

因此,UserForm应该在Sheet1中提取用户的输入(比如123abc),然后在Sheet2中搜索类似的结果。然后,最近的结果(可能是大约五个类似结果的范围)应该填充列表框。

因此,它可能会从列表中返回123a123ab1235c1355abc之类的内容

希望这是有道理的 - 感谢你的帮助。

我已经尝试过的代码(并且没有工作,转为1004)并附有注释以供澄清:

Private Sub UserForm_Initialize()
  Dim cs As Worksheet
  Dim c As Range
  Dim i As Integer
  Dim code As Variant
  Dim co As String

Set code = Sheets("Sheet1").Range("B4") 'picks up user input
co = Left(code, 2) 'just takes first two letters of input to find similar

Set cs = Sheets("Sheet2")
Set c = cs.Range("A2:A20000").Find(co) 'find code (obviously :))

For i = 1 To cs.Cells(c.Offset(5, 0), 1).End(xlUp).Row Step 1
   If cs.Cells(i, 1).Value <> vbNullString Then Me.ListBox1.AddItem cs.Cells(i, 1).Value
Next i 'populate listbox

End Sub

非常感谢!

修改

我已将下面标记为已接受的答案,但对于浏览此问题的其他人来说,仍然存在将此与模板Excel文件集成的问题,因为它返回错误&#39;外部表格不是预期的格式& #39 ;.我必须将ThisWorkbook.FullName更改为完整模板路径以删除其他错误。

1 个答案:

答案 0 :(得分:0)

以下是上述示例。代码主要是根据需要进行评论。请随时提出任何问题。

我做了一个快速的性能测试,在大约65,000条记录的数据集中搜索文本字符串。看起来不到一秒钟。

以下是代码:

Update-Database SecondToLast
Remove-Migration
Remove-Migration
Add-Migration Last
Update-Database