【问题标题】:VBA code executing when Access form opened in design view在设计视图中打开 Access 表单时执行的 VBA 代码
【发布时间】:2018-11-11 14:43:46
【问题描述】:

我继承了一个 Access 数据库,它显示了一些非常奇怪的间歇性行为,有时在设计模式下打开或保存对象时执行 VBA 过程。

例如,我可以 SHIFT+OPEN 数据库绕过任何启动代码。但是当我在 DESIGN 视图中打开一个表单时,没有其他任何东西打开,然后运行一个过程(由于启动代码没有执行而出现错误。)

任何人都可以阐明这可能是如何发生的吗?例如,是否可以指定在设计模式下打开表单时触发的事件?

非常感谢, 吉姆

【问题讨论】:

  • 只需检查相关表单背后的代码。查看正在使用的触发事件。
  • 我已经做了那个冻糕。我看不到什么事件会触发代码运行。我什至在运行的代码中设置了断点,但是这个断点似乎被忽略了。此外,当我收到错误时,它不会让我 CTRL+BREAK 退出,代码只是循环使用。
  • 尝试:反编译然后重新编译、压缩和修复、重建表单。
  • 请告诉我们您看到了什么或发布代码。我们可以提供帮助。
  • 谢谢 Parfait,我已经尝试过反编译 & 压缩和修复。我讨厌重建表格,但我可能不得不考虑......

标签: ms-access vba


【解决方案1】:

功能区回调触发 - 即使您只是在设计模式下打开表单,也会发生这种情况。因此,您必须在“其他”选项卡中使用/设置功能区属性(将其删除),因此不会运行任何代码。

所以检查表单功能区设置 - 代码触发 + 运行回调并且即使您直接跳转到设计模式也会这样做。

【讨论】:

  • 嗨,阿尔伯特,感谢您的建议。我确实对此感到疑惑,但是那里的表单和所有子表单(选项卡式页面布局中有一些 - 我知道......!)有一个空白的功能区属性。我还注意到,在设计视图中打开表单时,此代码有时不会触发,但在保存表单时会触发。
  • 好的,我设法缩小了范围。事实证明,表单上的其中一个控件有一个 RowSource,它引用一个查询,该查询具有在其中一列的条件部分中调用的函数。这会导致错误,因为函数使用尚未设置的变量。如果我从行源中删除这个字符串,一切都很好。但我的问题是:为什么在设计模式下打开(或保存)表单时这个函数会触发?
  • 很有趣(对您来说也很棒)。保存时访问表单经常查询数据源以“解析”值,并且表单生成控件值的集合 - 这个过程显然涉及查询表单的数据源和控件(例如组合/列表框) .
【解决方案2】:

检查是否有任何其他已加载的表单正在运行活动计时器。

【讨论】:

    猜你喜欢
    • 2013-06-30
    • 2022-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多