我想根据在同一表单上的文本框中输入的数据填充Word用户表单上的列表框。理想情况下,这将实时发生(使用我认为的更改事件),文本框中输入的每个字符都会过滤列表框中显示的项目。
数据源是Excel"数据库"使用DAO访问。下面的代码可以工作,但它将整个数据库输入到列表框中(基于此 - Link)。
pry
如何过滤数据以便仅按文本框填充列表框?我希望有一个简单的解决方案,比如修改代码的 Private Sub UserForm_Initialize()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim NoOfRecords As Long
'Open the database (Excel File)
Set db = OpenDatabase("C:\Users\T400\Documents\UserFormListTest.xlsx" _
, False, False, "Excel 8.0")
'Retrieve the recordset > Excel Range = "ListBoxData"
Set rs = db.OpenRecordset("SELECT * FROM ListBoxData")
' Determine the number of retrieved records
With rs
.MoveLast
NoOfRecords = .RecordCount
.MoveFirst
End With
' Set the number of Columns = number of Fields in recordset
ListBox1.ColumnCount = rs.Fields.Count
ListBox1.Column = rs.GetRows(NoOfRecords)
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
End Sub
查询部分。
这可能吗?或者有更好的方法吗?
答案 0 :(得分:0)
正如我在问题评论中提到的,MS Excel使用Jet数据库引擎。因此,您必须使用与该数据库引擎相对应的通配符。
因此,如果您想开发自定义“搜索/查找”功能,可以使用以下选项在表单上添加Combobox控件:All
,StartsWith
,Contains
和{{ 1}}。示例代码应如下所示(将控件的名称替换为您的名称):
EndsWith
有关通配符的更多信息,请在此处找到:
Access wildcard character reference
Office: Wildcard Characters used in String Comparisons