我的困难是:我有一个Excel电子表格,我需要一个UserForm ListBox,根据以前的用户输入填充一些数据行。
因此,UserForm应该在Sheet1
中提取用户的输入(比如123abc
),然后在Sheet2
中搜索类似的结果。然后,最近的结果(可能是大约五个类似结果的范围)应该填充列表框。
因此,它可能会从列表中返回123a
,123ab
,1235c
和1355abc
之类的内容
希望这是有道理的 - 感谢你的帮助。
我已经尝试过的代码(并且没有工作,转为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
更改为完整模板路径以删除其他错误。
答案 0 :(得分:0)
以下是上述示例。代码主要是根据需要进行评论。请随时提出任何问题。
我做了一个快速的性能测试,在大约65,000条记录的数据集中搜索文本字符串。看起来不到一秒钟。
以下是代码:
Update-Database SecondToLast
Remove-Migration
Remove-Migration
Add-Migration Last
Update-Database