Ms access Access VBA:抑制的运行时错误

Ms access Access VBA:抑制的运行时错误,ms-access,error-handling,vba,messagebox,Ms Access,Error Handling,Vba,Messagebox,当我开发MS Access应用程序时,我用shift键单击打开它。当发生错误时,该错误未被捕获(通过ON Error…),会弹出一个消息框,通知我该错误。这是一件好事 当用户打开我的应用程序时,他不会按住shift键单击,并打开一个适当的开始表单。但是,现在不显示未跟踪的错误,应用程序的行为就像用户单击消息框上的停止按钮一样。我不要这种行为 是否有一个选项/属性/变量在生产代码中提供与开发中相同的行为(最好是在应用程序id转换为mde时),即为每个未跟踪的错误显示一个消息框?或者,是否有必要在每

当我开发MS Access应用程序时,我用shift键单击打开它。当发生错误时,该错误未被捕获(通过ON Error…),会弹出一个消息框,通知我该错误。这是一件好事

当用户打开我的应用程序时,他不会按住shift键单击,并打开一个适当的开始表单。但是,现在不显示未跟踪的错误,应用程序的行为就像用户单击消息框上的停止按钮一样。我不要这种行为


是否有一个选项/属性/变量在生产代码中提供与开发中相同的行为(最好是在应用程序id转换为mde时),即为每个未跟踪的错误显示一个消息框?或者,是否有必要在每个事件例程中捕获错误并按程序弹出消息框?

事实证明,这是将AllowSpecialKeys属性设置为False的副作用。这可以通过编程实现,但我是在“工具”>“启动”下的菜单中实现的

因为这个属性允许用户打开代码编辑器,所以这有点道理,但是这个选项描述的现象之间的关系让我感到困惑


这是否意味着,如果我想隐藏代码,我需要编写所有这些错误处理程序?或者有一个中心位置(比如Java中的main方法)可以调用错误处理程序。或者,我是否可以允许使用特定的键并仅使用关键字保护代码?

您可以创建自己的错误处理程序,并将其添加到所有进程、子进程和函数中。您有一个非常好的VBA附加组件,它允许您执行许多操作,例如向代码中添加行号、“预编程”错误标签等

如果您足够聪明,您将能够使用此插件生成标准的“错误管理”代码,显示诸如err.number、err.description和undocument erl值等内容,该值是发生错误的行号(必须先对行进行编号,然后才能获取此值)


编辑:我刚刚打开了一个类似的主题。

正如前面提到的,MZ Tools 3.0是一个很好的工具,可以帮助快速添加错误处理程序。还请记住,在没有错误处理程序的过程中发生的错误会“冒泡”到最后一次调用On error语句。(如果不存在任何语句,您将得到一个灰色的调试框。)这样做的最终效果是,您只需将错误处理程序添加到公共(或友元)或由事件调用的过程中,就可以进行最小的错误处理。这将确保始终至少调用1个“顶级”错误处理程序。如果你想添加特殊处理到您的私人程序之后,请放心。如果没有,当它们发生错误时,它们将“冒泡”到顶级错误处理程序。

似乎您有一个错误陷阱,即错误转到。。。请发布错误陷阱的代码。此行为不是默认行为。不,这会发生,例如,在具有单行调试打印1/0的单击处理程序中。如果要隐藏代码,请分发一个MDE,其中没有代码。它也不会在任何未被捕获的错误上丢失全局变量。