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

Posted

技术标签:

【中文标题】MS Access VBA - 声明变量时变量未定义错误【英文标题】:MS Access VBA - Variable not defined error when variables have been declared 【发布时间】:2015-07-06 19:02:03 【问题描述】:

我创建了一个包含一些字段的表单,我想使用变量将这些字段转移到新表单。表单代码的设置是“选项比较数据库”和“选项显式”。我在下面声明了四个公共变量,如下所示:

Option Compare Database
Option Explicit
Public LnNum As Long
Public InvLnNum As String
Public Inv As String
Public DefID As Long

再往下是打开表单的代码。我在第一个表单上设置了一个按钮,当它打开时,我希望将一些字段复制到新表单(这些字段具有相同的名称)。这是该特定事件的代码:

Private Sub cmdNewDefect_Click()

LnNum = Me.LoanNumber.Value
InvLnNum = Me.InvestorLoanNumber.Value
Inv = Me.Investor.Value
DefID = Me.ID.Value

DoCmd.OpenForm "frmInvestorDefects"
DoCmd.GoToRecord acDataForm, "frmInvestorDefects", acNewRec
Form_frmInvestorDefects.LoanNumber.Value = LnNum
Form_frmInvestorDefects.InvestorLoanNumber.Value = InvLnNum
Form_frmInvestorDefects.Investor.Value = Inv
Form_frmInvestorDefects.ID.Value = DefID

End Sub

当我单击按钮时,我收到错误消息“编译错误:未定义变量。”我有另一个数据库,其中包含多个表单,这些表单可以完成我希望此表单毫无问题地完成的事情。代码完全相同,只是事件发生在 After Update 事件而不是 On Click 上,所以我很难过。我尝试使用 Dim 语句而不是 Public 将变量声明移动到实际的子过程中,但这也不起作用。我在想有一个设置或我忘记的东西。提前致谢!

【问题讨论】:

【参考方案1】:

如果您打开的表格是:“frmInvestorDefects” 然后试试:

frmInvestorDefects.LoanNumber.Value = LnNum

不确定为什么需要“Form_”前缀... 也不知道为什么需要 .Value 部分

frmInvestorDefects.LoanNumber = LnNum 

[frmInvestorDefects].[LoanNumber] = LnNum

【讨论】:

以上是关于MS Access VBA - 声明变量时变量未定义错误的主要内容,如果未能解决你的问题,请参考以下文章

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

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

使用 Option Explicit 的 MS Access VBA 给出“变量未定义”错误,但适用于不同的数据库

如何从 Access VBA 中的另一个私有子获取私有子中声明的变量的值

Access VBA - 为声明为 long 的函数返回某种空白/空值

无法在MS-Access中的子中使用函数的变量