You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Access从表赋值变量报错:Object Required

解决MS Access中从表取值时“Object Required”错误的问题

嗨,这个问题我之前处理过,根源是你直接用表名访问字段的方式不对——Access里的表名称本身不是可直接调用字段的对象,得用正确的方法从表中读取数据才行。

错误原因

你写的代码:

Dim VarOutPut As String 
VarOutPut = CurrentSt.StCurr

这里的CurrentSt只是数据库里的表名,不是一个实例化的记录对象,Access无法通过表名直接访问字段内容,所以抛出了“Object Required”错误。而直接赋值固定字符串(比如"1000")时,变量拿到的是明确的字符串值,自然不会有问题。

两种可行的解决方案

因为你的CurrentSt表只有1条记录,以下两种方法都适用:

方法1:使用DLookup函数(最简单)

DLookup是Access专门用来从表/查询中获取单个字段值的函数,适合这种单条记录的场景:

Dim VarOutPut As String
' 第一个参数是目标字段名,第二个参数是表名
VarOutPut = DLookup("StCurr", "CurrentSt")

不需要额外的对象操作,一行代码就能拿到字段值。

方法2:使用DAO记录集(更灵活)

如果以后你的表可能增加记录,或者需要更复杂的数据操作,用DAO记录集的方式更通用:

Dim VarOutPut As String
Dim rs As DAO.Recordset

' 打开CurrentSt表的记录集
Set rs = CurrentDb.OpenRecordset("CurrentSt")
' 检查记录集是否有数据(这里因为只有1条,肯定会进入分支)
If Not rs.EOF Then
    VarOutPut = rs!StCurr ' 或者用 rs("StCurr") 也可以
End If
' 关闭记录集并释放资源
rs.Close
Set rs = Nothing

这种方式通过实例化记录集对象来访问字段,是VBA操作Access数据表的标准方式。

修改后,变量VarOutPut就能正确获取到CurrentSt表中StCurr字段的值,导出操作应该就能正常运行了。

内容的提问来源于stack exchange,提问作者vfreeman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:03:21