访问VBA:抑制运行时错误

时间:2008-12-10 11:24:54

标签: vba ms-access error-handling access-vba messagebox

当我正在开发MS Access应用程序时,我通过shift单击打开它。当发生错误时,没有被捕获(通过ON ERROR ...),会弹出一个消息框,通知我有关错误的信息。这是一件好事。

当用户打开我的应用程序时,他不会移动点击,并打开相应的“开始表单”。但是,现在未显示未捕获的错误,应用程序的行为就像用户单击消息框上的“停止”按钮一样。我不想要这种行为。

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

3 个答案:

答案 0 :(得分:1)

事实证明,这是将AllowSpecialKeys属性设置为False的副作用。这可以通过编程方式完成,但我在Tools>下的菜单中完成了。启动。

由于这个属性允许用户打开代码编辑器,这有点意义,但是这个选项所描述的现象的关系对我来说是令人费解的。

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

答案 1 :(得分:0)

您可以创建自己的错误处理程序并将其添加到所有procs,subs和函数中。你有这个非常好的MZ Tools VBA附加组件,可以为你的代码添加行号,“预编程”你的错误标签等等。

如果你足够聪明,你将能够使用这个附加组件来生成一个标准的“错误管理”代码,显示诸如err.number,err.description和undocument erl值之类的东西,这是发生错误的行号(在获得此值之前,必须先对行进行编号)。

编辑:我刚刚在类似主题上开了this question

答案 2 :(得分:0)

如上所述,MZ-Tools 3.0是一个很好的工具,可以帮助快速添加错误处理程序。还要记住,程序中没有错误处理程序时出现的错误“冒泡”到最后调用的On Error语句。 (如果不存在任何语句,则会得到一个小的灰色调试框。)这样做的结果是,只需将错误处理程序仅添加到Public(或Friend)或由event调用的过程中,就可以进行最小的错误处理。这将确保您始终至少调用1个“顶级”错误处理程序。如果您想在您的私人程序之后添加特殊处理,请随意。如果没有,当它们发生错误时,它们将“冒泡”到顶级错误处理程序。