VBA 通过变量名引用列表框表单控件
VBA reference to listbox form control by variable name
我坚持在 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
我收到以下错误:"Run-time error '91': Object Block or With block variable not set" 突出显示行
lstBox = Me.Controls(lstName)
当我将代码更改为:
Private Sub buildMultiSQL(lstName As String, fldName As String)
Dim lstBox As Object
lstBox = Forms(frmMultiselect).Controls(lstName)
…
End Sub
我在同一行收到不同的运行时错误:"Run-time error '2465': [My Database Name] can't find the field 'lstStudies' referred to in your expression."
如何使用变量名引用作为表单控件的列表框?我已经仔细检查过列表框确实命名为 lstStudies,并且窗体上没有其他列表框或控件具有该名称。
分配对象变量时需要使用Set
Set lstBox = Me.Controls(lstName)
我坚持在 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
我收到以下错误:"Run-time error '91': Object Block or With block variable not set" 突出显示行
lstBox = Me.Controls(lstName)
当我将代码更改为:
Private Sub buildMultiSQL(lstName As String, fldName As String)
Dim lstBox As Object
lstBox = Forms(frmMultiselect).Controls(lstName)
…
End Sub
我在同一行收到不同的运行时错误:"Run-time error '2465': [My Database Name] can't find the field 'lstStudies' referred to in your expression."
如何使用变量名引用作为表单控件的列表框?我已经仔细检查过列表框确实命名为 lstStudies,并且窗体上没有其他列表框或控件具有该名称。
分配对象变量时需要使用Set
Set lstBox = Me.Controls(lstName)