我已经在Word和Project中对用户表单进行了编程,但是没有问题,但是在MS Access中加载Form1时遇到了问题。它给了我这个错误:
对象变量或未设置With块
当我使用DoCmd.OpenForm "Form1", acNormal, , , , acDialog
时,表单会启动。
我现在知道Load Form1
在MS Access中不起作用。所以我必须使用DoCmd.OpenForm...
但是访问表格上输入的数据仍然有问题。
我的表单有两个输入字段:frm_Company and frm_Date
,下面是代码。
Dim str_Company as String 'variable to capture result for form input
Dim date_Forecast as String 'variable to capture result of form input
DoCmd.OpenForm "Form1", acNormal, , , , acDialog
str_Company = Forms!Form1!frm_Company
date_Forecast = Forms!Form1!frm_Date
执行代码后,Form1启动,用户将输入两个字段的数据,然后按“关闭表单”按钮。当VBA尝试执行最后两行时,出现错误:
Microsoft找不到引用的窗体Form1
感谢您的帮助。
答案 0 :(得分:1)
不必仅使用表单对象变量来打开表单。只需引用表格名称-就像成功进行第三次尝试一样。然后,如果调用表单需要引用已打开的表单,请使用Forms集合。
Forms!Form1.controlname
或
Forms!Form1!fieldname
Me
限定词引用对象代码在后面。
但是,acDialog
暂停执行代码,直到被调用的窗体关闭。因此,当恢复第一个表单代码时,第二个表单已关闭并且无法找到。第二种形式后面的代码应首先引用以将值推回到第一种形式。另一种选择是设置全局变量或TempVars,然后可以通过任何过程对其进行引用。