Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms 从另一个窗体调用子窗体例程_Forms_Ms Access_Vba_Ms Access 2007 - Fatal编程技术网

Forms 从另一个窗体调用子窗体例程

Forms 从另一个窗体调用子窗体例程,forms,ms-access,vba,ms-access-2007,Forms,Ms Access,Vba,Ms Access 2007,我有一个表单X,其中包含一个子表单Y。在Y表单中定义了一个例程。我需要从另一个窗体Z调用该例程(每当用户单击子窗体Y上的某个按钮时,该窗体就会打开),以关闭此窗体Z的事件。窗体X是打开的。到目前为止,我所尝试的都不起作用: //表格Z Call Forms("X").SomeRoutine Call Forms("Y").SomeRoutine 但是每次我收到运行时错误2450,Access都找不到表单。这是表单!X!Y.Form.SomeRoutine-您必须显式处理表单我的X表单包含一个名

我有一个表单X,其中包含一个子表单Y。在Y表单中定义了一个例程。我需要从另一个窗体Z调用该例程(每当用户单击子窗体Y上的某个按钮时,该窗体就会打开),以关闭此窗体Z的事件。窗体X是打开的。到目前为止,我所尝试的都不起作用:

//表格Z

Call Forms("X").SomeRoutine
Call Forms("Y").SomeRoutine

但是每次我收到运行时错误2450,Access都找不到表单。

这是
表单!X!Y.Form.SomeRoutine
-您必须显式处理表单

我的X表单包含一个名为Child1的子表单控件。Y是作为子窗体包含在Child1中的窗体

表格Y包括以下
公共
VBA程序:

Public子例程()
Debug.Print“this someroutin in form”&Me.Name
端接头
当父窗体(X)在窗体视图中打开时,我可以转到即时窗口(Ctrl+g)并调用如下例程

表单!X!孩子1.形成某种习惯
这是表格Y中的一些常规
关键的一点是,我使用了包含Y子窗体的子窗体控件的名称。(注意字母
Y
甚至不存在于
Forms!X!Child1.Form.SomeRoutine


子窗体控件名称可能与其包含的窗体名称相同。。。但它不一定是相同的。请检查您的控件,以确保您使用了控件的名称。

您不能直接将其命名为好友吗?像这样

Friend Sub cmd_Click()
  'code
End Sub

Private Sub Form_Open(Cancel As Integer)
  Me.cmd_Click
End Sub

请参阅子窗体确保子窗体/函数不是私有的。确保窗体子窗体是公共的(Public SomeRoutine()…);然后使用Call MyForm.SomeRoutine从表单外部调用它。yes子/函数仅为公共函数。Call Forms!X!例行公事谢谢。。我试过了,但不起作用…:(