MS-Access VBA:将变量从一种形式传递到另一种形式,从而产生运行时错误

时间:2018-10-22 13:19:23

标签: vba ms-access access-vba

我有一个表格frm_New_Datasheet,可以将志愿者的数据表输入到我正在创建的数据库中。对于志愿者ID文本框txt_Vol_ID,我有两个按钮可以搜索现有的志愿者或添加一个新的志愿者,每个按钮分别打开一个表单。添加新的志愿者后,我希望Vol_ID中的frm_Volunteers传递回frm_New_Datasheet

为此,我在志愿者表单中添加了以下代码:

Private Sub Form_AfterInsert()
    If Not IsNull(Me.vol_Vol_ID) Then
        Dim volVal As Double
        volVal = Me.vol_Vol_ID
        Forms!frm_New_Datasheet!txt_Vol_ID.Value = volVal
    End If

End Sub  

效果很好。然后,我尝试创建“搜索志愿者”表单,并向其中添加了相同的代码,但是现在我在这两个表单上都遇到了以下错误:

  

运行时错误-2146500594(800f000e):
  对象“表单”的方法“项目”失败

调试器突出显示了我设置.Value = volVal的行,因此我在寻找其他方法来调用该文本框,但还没有走运。我已经尝试过

Forms([frm_New_Datasheet]).[txt_Vol_ID] = volVal`

但这给了我一个不同的错误:

  

运行时错误“ 2465”:
  Microsoft Access找不到表达式中引用的字段“ | 1”

对此我感到很迷茫,因为我想我正确地调用了另一个表单的文本框,当我搜索第一个运行时错误时,我发现的最佳建议是“有时VBA出现故障并尝试重新启动”没有帮助。到目前为止,这是最好的主意,我必须将值从一种形式传递给另一种形式。如果还有其他地方,我可以放下这段代码,或者以其他方式给这只猫剥皮。

谢谢!

2 个答案:

答案 0 :(得分:0)

看起来您应该更仔细地检查表单/控件名称,并确保表单frm_New_Datasheet已打开。

以下是通过表单名称引用Forms集合的正确变体:

Forms("frm_New_Datasheet").txt_Vol_ID = volVal

答案 1 :(得分:0)

我不确定这是否真的可以作为答案,但是在HansUp帮助我解决了上面的注释中的一些麻烦之后,我只是复制了未找到的表单(仍然不确定原因),并粘贴了一个新名称,并删除了原始表格。之后,一切工作正常。