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

Calling SubForm routine from another Form

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

// 形式 Z

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

但每次我都收到运行时错误 2450,表示 Access 无法找到表单。

它是 Forms!X!Y.Form.SomeRoutine - 您必须明确说明表单

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

中的表单

表格 Y 包括此 Public VBA 程序:

Public Sub SomeRoutine()
    Debug.Print "this SomeRoutine in form " & Me.Name
End Sub

在窗体视图中打开父窗体 (X) 后,我可以转到立即 window (Ctrl +g) 并像这样调用 SomeRoutine ...

Forms!X!Child1.Form.SomeRoutine
this SomeRoutine in form Y

关键是我使用了包含Y子窗体的子窗体control的名称。 (注意字母 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