【发布时间】:2013-10-02 14:48:27
【问题描述】:
我有一个包含大量表单(300 多个)和 VBA 代码的 Access 数据库。此 Access db 的后端位于 MS SQL 中。
当我在窗体中的控件上(在窗体视图中)时,我想直接“跳转”到该窗体的 VBA 代码,而无需关闭或将窗体置于设计模式。我可以使用分配给函数的快捷键来执行此操作。
当控件不在子窗体中时,这很有效。但是在这种情况下,代码会遇到错误,告诉我找不到表单模块。
这是我使用的代码:
Dim sFrmName As String
sFrmName = Screen.ActiveControl.Parent.Name
If Nz(sFrmName, "") = "" Then Exit Function
'Open forms module
DoCmd.OpenModule "Form_" & sFrmName
如何更改此代码,以便我不必将表单置于设计模式即可转到此表单的 VBA 代码,这也适用于子表单?我知道我可以在 VBE 中手动执行此操作,但我想在 VBA 中执行此操作。
【问题讨论】:
-
我们的 Access 数据库中的所有表单都有表单模块,我知道这一点。上面的函数在 activecontrol 在 mainform 中时效果很好,但在 subform 中时效果不佳。我确实得到了(子)表单的正确名称,但是 docmd.openmodule 给了我一个找不到模块的错误。当我将相同的子窗体设置为主窗体时,仅用于测试,上面的相同代码确实可以正常工作。我们有很多子表单在使用,上面的功能可以为我们节省大量的开发或排查时间。