VBA:使用文本框填充Word用户表单上的列表框 - 查询Excel数据库

时间:2016-06-18 18:01:02

标签: database vba excel-vba word-vba userform

我想根据在同一表单上的文本框中输入的数据填充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 查询部分。

这可能吗?或者有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

正如我在问题评论中提到的,MS Excel使用Jet数据库引擎。因此,您必须使用与该数据库引擎相对应的通配符。

因此,如果您想开发自定义“搜索/查找”功能,可以使用以下选项在表单上添加Combobox控件:AllStartsWithContains和{{ 1}}。示例代码应如下所示(将控件的名称替换为您的名称):

EndsWith

有关通配符的更多信息,请在此处找到:
Access wildcard character reference
Office: Wildcard Characters used in String Comparisons