MS Access中的VBA中不接受变量名称

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MS Access中的VBA中不接受变量名称相关的知识,希望对你有一定的参考价值。

我有一个SQL VBA查询,用于在单击按钮时更新表单上的多个文本框中的值。

查询从表单上的多个标签名称标题中获取输入。所以Label1的标题将输入TextBox1Label2标题为Textbox2等。

我试图通过变量将标签名称传递给查询。但是,在生成变量b的值的行上返回以下错误:

“Microsoft Access无法找到表达式中引用的字段'&labelname&'。

我的代码如下。我想使用一个变量,以便稍后我可以使它成为一个接受标签名称并返回记录集值的函数。通过这种方式,我将能够避免约。 150行代码,因为我必须使用相同数量的标签更新20到25个文本框。

Private Sub Command111_Click()
Dim dbs As DAO.Database
Dim rs As DAO.Recordset
Dim ssql As String
Dim labelname As String
Dim b As String
Set dbs = CurrentDb

'---------------------------------------------------------------------------    ----
labelname = "Label24"
b = [Forms]![Bal_Sheet]![& labelname &].Caption
ssql = "select sum(a.[Bal Fwd]) from Trial_Balance a,Act_Master b where a.GBOBJ = b.object and a.GBSUB = b.sub and b.Cat = " & "'" & b & "'"
Debug.Print ssql
Set rs = dbs.OpenRecordset(ssql, dbOpenDynaset)
[Forms]![Bal_Sheet]![Text1].Value = rs(0)
'-------------------------------------------------------------------------------
rs.Close
Set rs = Nothing
dbs.Close
End Sub
答案

你的表达:

b = [Forms]![Bal_Sheet]![& labelname &].Caption

不连接字符串,因为[Forms][Bal_Sheet]引用对象。

相反,你应该使用:

b = Forms("Bal_Sheet").Controls(labelname).Caption

以上是关于MS Access中的VBA中不接受变量名称的主要内容,如果未能解决你的问题,请参考以下文章

在 MS Access VBA 中添加两个等于零的变量时出现奇怪的结果

在 VBA 中为 MS Access 中的用户携带一个变量

带有空格和范围的 MS Access VBA acImport 工作表名称

MS Access VBA - 声明变量时变量未定义错误

MS Access VBA - 在表单上提取列表框值(使用表单名称。)

如何在 VBA 代码中的 ms-access 中执行查询?