【发布时间】:2017-11-13 03:50:02
【问题描述】:
所以我有一个用户表单,其中组合框用作动态搜索框。
需要搜索的数据位于另一个工作簿(1200+ 行)中。为了避免不断打开和关闭该数据工作簿,我在表单初始化期间将其全部加载到字典中。
现在我的问题是:是否可以在用户输入时快速过滤掉字典数据(并更新组合框),还是我需要改变我的方法?
任何帮助将不胜感激。
这是我目前的代码:
Option Explicit
Private emplDict As Object
'all other constants and functions are declared in a separate module named "code"
Private Sub btnClose_Click()
Unload Me
End Sub
Private Sub comboSearch_Change()
Me.comboSearch.DropDown
End Sub
Private Sub UserForm_Initialize()
Dim xlWS As Worksheet
Dim xlWB As Workbook
Dim rng As Range
Dim lstRw As Long
Dim item As Variant
Application.Run "code.xlHelper", False ' turn off screen updating, alerts, events
Set emplDict = CreateObject("scripting.dictionary")
Set xlWB = Workbooks.Open(Filename:=SUB_PLANNING & EMPLOYEE_LIST)
Set xlWS = xlWB.Sheets("namen_werknemers")
With xlWS
lstRw = .Cells(Rows.Count, 1).End(xlUp).Row
Set rng = .Range(.Cells(2, 1), .Cells(lstRw, 1))
End With
For Each item In rng
If Not emplDict.exists(item.Value) Then
emplDict.Add item.Text, item.Offset(0, 1).Text
End If
Next
xlWB.Close False
Set xlWS = Nothing
Set xlWB = Nothing
Application.Run "code.xlHelper", True
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Set emplDict = Nothing
End Sub
【问题讨论】:
-
我不知道有任何内置的
Dictionary对象方法来过滤它,所以我会手动进行。但请澄清以下内容: 1) “当用户输入“:用户应该在哪里输入? 2) "(and update combobox)":用什么数据更新什么combobox? -
user3598756 我的意思是类似于谷歌搜索引擎使用的功能。当用户输入字母时,会出现建议。这一切都发生在一个组合框中。用户输入查询,组合框的下拉菜单打开,显示找到的结果