Ms access 访问列表框非绑定列作为查询条件

Ms access 访问列表框非绑定列作为查询条件,ms-access,listbox,vba,Ms Access,Listbox,Vba,我正在尝试根据列表框中特定列(而不是绑定列)中的项的值筛选查询 这是我到目前为止所拥有的 我有一个列表框,有两列inv\u id和prod\u id 列表框的名称为lst\u MainList库存id是绑定列(第1列) 列表位于名为Projects 我试图创建两个查询 第一个用于根据库存id筛选查询 这很容易,因为inv_id是我的绑定列 为了获得第二列的值,我尝试创建一个函数 Public Function GetColumnValue(col As Integer, ByRef lst As

我正在尝试根据列表框中特定列(而不是绑定列)中的项的值筛选查询

这是我到目前为止所拥有的

我有一个列表框,有两列
inv\u id
prod\u id
列表框的名称为lst\u MainList
<代码>库存id是绑定列(第1列) 列表位于名为
Projects

我试图创建两个查询

第一个用于根据库存id筛选查询 这很容易,因为inv_id是我的绑定列

为了获得第二列的值,我尝试创建一个函数

Public Function GetColumnValue(col As Integer, ByRef lst As Access.ListBox)
    GetColumnValue = lst.Column(col)
End Function
其思想是将列号和列表框名称传递给函数,函数将返回该列的值

功能似乎还可以。问题是当我将此函数作为条件输入查询时

=GetColumnValue(2,[Forms]![Projects]![lst_MainList])
希望根据当前活动项的第2列筛选查询,我在查询运行时遇到此错误

This expression is typed incorrectly or is too complex
我知道我在这里的最后一个选择是添加一个绑定到列表框第2列的不可见文本框,但我想尝试函数方法,因为它看起来更干净、更可重用


知道我的函数有什么问题吗?

那是因为在查询中,
[Forms]![项目]![lst_MainList]
将返回控件的Value属性,而不是对控件的引用

您可能需要执行以下操作:

Public Function GetColumnValue(col As Integer, FormName As String, ControlName As String)
    GetColumnValue = Forms(FormName).Controls(ControlName).Column(col)
End Function
然后:

=GetColumnValue(2,"Projects","lst_MainList")

这很有效。谢谢虽然有一点小的修正。应该有“s”(复数控件)
…控件(控件名).
应该是
…控件(控件名).