0

我有一个导航表单,其中包含两个看起来像这样的子表单:

在此处输入图像描述

单击子表单A中的按钮时,我想从子表单B调用一个方法。该方法定义如下:

Public Sub MyMethod()
    Debug.Print "MyMethod called"
End Sub

我尝试使用Forms!SubformB.MyMethod但我得到了错误Database cannot find the referenced form 'SubformB'。参考页面,我也尝试过Forms!NavigationForm!SubformB.MyMethod,但后来我得到了Database cannot find the referenced form 'NavigationForm'. 有谁知道如何正确地做到这一点?

谢谢你。

4

3 回答 3

1

FunctionSub在表单的类模块中定义的过程被认为是该表单的私有。如果您想要一个Sub可以从几种不同形式调用的模块,则将其移至Sub“常规”VBA 模块(即,当您从 VBA 编辑器的菜单栏中选择时创建的模块Insert > Module)并确保将其声明为Public.

于 2013-05-08T17:50:44.933 回答
1

这是我在单击主窗体上的按钮时切换子窗体的 AllowEdits 方法的代码片段。很确定这就是你所追求的。

Function ToggleEditStatus_Child(WhichForm, WhichChild As String)
 'Changes the AllowEdits setting of the SubForm parameter

 Dim Cform As Object

 Set Cform = Forms(WhichForm).Controls(WhichChild).Form
 Cform.AllowEdits = Not Cform.AllowEdits
 Forms(WhichForm).Refresh
 Cform.Refresh
 Forms(WhichForm).Controls(WhichChild).SetFocus
 Set Cform = Nothing

End Function
于 2013-05-09T18:48:45.230 回答
0

我确实弄清楚了这一点,但有一个问题 - 另一个表格必须打开。这对我有用,所以我在这里发布解决方案。

首先,导航到表单:

DoCmd.BrowseTo ObjectType:=acBrowseToForm, _
ObjectName:="SubformB", _
PathToSubformControl:="NavigationForm.NavigationSubform", _
DataMode:=acFormEdit

然后创建一个指向子表单的指针:

Dim f As Form_SubformB
Set f = Forms("NavigationForm").NavigationSubform.Form

您可以自由调用该方法:

f.MyMethod()

注意:您很可能必须使该方法Public起作用。

于 2013-05-09T16:28:24.880 回答