如何在 Access VBA 中从另一个窗体调用一个窗体的 Form_Load
Posted
技术标签:
【中文标题】如何在 Access VBA 中从另一个窗体调用一个窗体的 Form_Load【英文标题】:How to call Form_Load of one form from another form in Access VBA 【发布时间】:2015-06-04 12:08:55 【问题描述】:我有一个 MS Access 表单,它在 grid 中显示记录列表。每行都有一个detail按钮。
点击它时,它打开一个新表单,其中包含该特定选定行的详细信息。
当点击详细表单的关闭按钮时,值被保存到数据库中。
现在,点击关闭,我想执行主表单的表单加载。这是因为我需要在详细更新后刷新一些值
我尝试过这样的事情:
Call Forms!frm_Package!Form_Load
请就如何实现这一点提出建议。我尝试了各种方法,但都无法奏效。
如果需要任何进一步的信息,请告诉我。
【问题讨论】:
【参考方案1】:您无法“re-call
”加载的原因是因为它是一个Private Sub
,并且只有当您在表单中时才能访问该方法。
破解“external procedure call”的一种方法是将 Form Load 中的代码移动到 Public Sub(使用相同的 Form)中,然后调用新的从表单外部创建 Sub。喜欢,
Private Sub Form_Load()
MsgBox "Hello World"
End Sub
到
Private Sub Form_Load()
newPubMethod
End Sub
Public Sub newPubMethod()
MsgBox "Hello World"
End Sub
现在,您甚至可以使用正确的量词从表单外部调用此 Public Sub newPubMethod。
Private Sub exitButtonName_Click()
Forms("CallingFormName").newPubMethod
End Sub
【讨论】:
非常适合我。谢谢..接受你的回答【参考方案2】:我使用这段代码来做这种事情。当我打开一个弹出式表单时,我隐藏了主表单……我完成了我的工作,然后我返回到了主表单。
Private Sub Form_Open(Cancel As Integer)
If gIsLoaded("mainForm") Then Form_mainForm.Visible = False
End Sub
Private Sub Form_Close()
' -- here you will put the code you need!!!
If gIsLoaded("mainForm") Then Form_mainForm.Visible = True
End Sub
Function gIsLoaded(strName As String, Optional _
lngtype As AcObjectType = acForm) As Boolean
gIsLoaded = (SysCmd(acSysCmdGetObjectState, _
lngtype, strName) <> 0)
End Function
【讨论】:
以上是关于如何在 Access VBA 中从另一个窗体调用一个窗体的 Form_Load的主要内容,如果未能解决你的问题,请参考以下文章