VBA通过变量名称引用列表框表单控件

时间:2018-11-29 20:29:36

标签: vba ms-access access-vba ms-access-2016

我一直坚持在VBA中引用表单上的列表框控件的语法。我正在尝试编写一个子程序,以基于多选列表框中的选择来构建SQL字符串。目前,我有以下代码:

Private Sub lstStudies_AfterUpdate()
    Call buildMultiSQL("lstStudies","field1")
End Sub

Private Sub buildMultiSQL(lstName As String, fldName As String)
     Dim lstBox As Object
     lstBox = Me.Controls(lstName)
     …
End Sub

我收到以下错误:“运行时错误'91':对象块或未设置块变量”突出显示了该行

lstBox = Me.Controls(lstName)

当我将代码更改为:

Private Sub buildMultiSQL(lstName As String, fldName As String)
     Dim lstBox As Object
     lstBox = Forms(frmMultiselect).Controls(lstName)
     …
End Sub

我在同一行上遇到另一个运行时错误:“运行时错误'2465':[我的数据库名称]找不到表达式中引用的字段'lstStudies'。”

如何使用变量名引用作为表单控件的列表框?我已经仔细检查过,列表框确实名为lstStudies,并且在表单上没有其他具有该名称的列表框或控件。

1 个答案:

答案 0 :(得分:1)

分配对象变量时,您需要使用Set

Set lstBox = Me.Controls(lstName)