在Windows 10上运行MS Access 2016.
我正在调试对MS Access应用程序的VBA更改,并且看到VBA编辑器和正在运行的代码之间发生了一些意外的交互。步骤基本上是:
基本上,VBA编辑器操作已将对象设置为空。我添加了仪器代码来确认这一点。
有没有人见过这种行为?有没有人对可能发生的事情产生影响并导致这种情况发生?
提前致谢...
其他信息: 在Form_Load方法中实例化对象的代码是:
Set musrInfo = New usrInfo
其中usrInfo是包含用户信息的类模块。
此外,早期版本没有问题 - 我从未遇到任何其他MSA VBA应用程序所描述的问题。这个特定MSA文件的编译版本略大于20MB,几乎没有数据表 - 只有少数参数等 - 而且表格,报告等都超过13MB。
我希望这有帮助... Lindsay
还有更多...... - 我在另一台装有Win7 / MSA2010的PC上尝试了这个.accdb文件 行为没有发生。 - 然后我在原始PC上的另一个文件夹中尝试了它 没发生。
也许这些调查结果将允许前进的道路,但我仍然想知道为什么会发生这种情况 - 为什么文件夹选择有所不同?
答案 0 :(得分:1)
这是通常的行为。
使用VBA编辑器进行更改时,它可能会重新编译数据库后面的VB项目。这可以是整个项目,也可以是部分项目,具体取决于具体的变化。
重新编译将清除所有变量。
您可以通过转到工具 - >来更改此行为常规标签下的选项。请参阅以下屏幕截图。
但是,即使关闭 Compile On Demand ,您也必须触发重新编译以进行大多数更改,清除所有设置变量。
对于需要单个实例才能公开使用的类,只要数据库处于打开状态,我建议将VB_PredeclaredID
设置为true。这将在数据库打开后立即实例化对象,或者代码重新编译。请参阅here how。