MS Access VBA编辑器活动影响正在运行的程序变量

时间:2018-03-23 22:12:57

标签: vba ms-access

在Windows 10上运行MS Access 2016.

我正在调试对MS Access应用程序的VBA更改,并且看到VBA编辑器和正在运行的代码之间发生了一些意外的交互。步骤基本上是:

  1. 打开应用程序,打开启动表单。
  2. 启动form_load实例化用户随后可能打开的其他表单使用的对象。
  3. 打开VBA编辑器
  4. 使用VBA编辑器,在任何代码模块中选择一行,并将实例化的对象设置为空。
  5. 打开使用该对象的其他表单时会引发错误。
  6. 基本上,VBA编辑器操作已将对象设置为空。我添加了仪器代码来确认这一点。

    有没有人见过这种行为?有没有人对可能发生的事情产生影响并导致这种情况发生?

    提前致谢...

    其他信息: 在Form_Load方法中实例化对象的代码是:

    Set musrInfo = New usrInfo
    

    其中usrInfo是包含用户信息的类模块。

    此外,早期版本没有问题 - 我从未遇到任何其他MSA VBA应用程序所描述的问题。这个特定MSA文件的编译版本略大于20MB,几乎没有数据表 - 只有少数参数等 - 而且表格,报告等都超过13MB。

    我希望这有帮助... Lindsay

    还有更多......   - 我在另一台装有Win7 / MSA2010的PC上尝试了这个.accdb文件    行为没有发生。   - 然后我在原始PC上的另一个文件夹中尝试了它    没发生。

    也许这些调查结果将允许前进的道路,但我仍然想知道为什么会发生这种情况 - 为什么文件夹选择有所不同?

1 个答案:

答案 0 :(得分:1)

这是通常的行为。

使用VBA编辑器进行更改时,它可能会重新编译数据库后面的VB项目。这可以是整个项目,也可以是部分项目,具体取决于具体的变化。

重新编译将清除所有变量。

您可以通过转到工具 - >来更改此行为常规标签下的选项。请参阅以下屏幕截图。

enter image description here

但是,即使关闭 Compile On Demand ,您也必须触发重新编译以进行大多数更改,清除所有设置变量。

对于需要单个实例才能公开使用的类,只要数据库处于打开状态,我建议将VB_PredeclaredID设置为true。这将在数​​据库打开后立即实例化对象,或者代码重新编译。请参阅here how。