如何在MS Access中引用子表单

Jay*_*Jay 5 ms-access vba subform ms-access-2010

在我的MS Access应用程序中,我使用的表单只包含两个控件 - 文本框和命令按钮.此表单命名为HEADER FORM.

HEADER FORM 用作各种其他形式的标题部分中的子表单.

我想要做的是,每当一个特定的表单加载时,我想在文本框中填写详细信息HEADER FORM(这将是已登录的人的名字.从下图中可以清楚地看到相同的内容).

我试图调用updateHeader在所有表单的表单加载事件中命名的全局子例程.

Public Sub updateHeader()
    Me![HEADER FORM].Form.txtHeaderName.Value = strPerson
End Sub
Run Code Online (Sandbox Code Playgroud)

以下是HEADER FORM在"设计视图"中显示的图片,同样用作登录表单中的子表单.

在此输入图像描述

我尝试了各种其他选项,但我无法提出正确的方式来引用表单.我从根本上做错了吗?

我看到的错误是无效使用Me关键字.此外,我的updateHeader子例程是一个全局子程序,它从所有表单的Form_Load事件中调用.

Han*_*sUp 3

如果您的updateHeader()程序包含在标准模块中,这将解释有关Me关键字的投诉...它在标准模块中无效。

在表单模块中,Me表示“此表单”。

您可以更改过程声明以接受对表单的引用。

Public Sub updateHeader(ByRef TheForm As Form)
    ' Me![HEADER FORM].Form.txtHeaderName.Value = strPerson
    TheForm![HEADER FORM].Form.txtHeaderName = strPerson
End Sub
Run Code Online (Sandbox Code Playgroud)

.Value是默认属性,因此这里不需要,所以我将其省略。但如果您愿意的话,将其添加回来也没什么坏处。

然后,您可以从父窗体调用该过程,并向该过程传递对其自身(父窗体)的引用。

updateHeader Me
Run Code Online (Sandbox Code Playgroud)