【问题标题】:Open VBA code of active form打开活动表单的 VBA 代码
【发布时间】: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 给了我一个找不到模块的错误。当我将相同的子窗体设置为主窗体时,仅用于测试,上面的相同代码确实可以正常工作。我们有很多子表单在使用,上面的功能可以为我们节省大量的开发或排查时间。

标签: ms-access vba


【解决方案1】:

找到了一种方法,这也适用于子表单:

Dim sFrmName As String

sFrmName = Screen.ActiveControl.Parent.Name
If Nz(sFrmName, "") = "" Then Exit Function

'Open forms module
'DoCmd.OpenModule "Form_" & sFrmName
Application.VBE.ActiveVBProject.VBComponents("Form_" & sFrmName).CodeModule.CodePane.Show

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    相关资源
    最近更新 更多