错字不会触发Access VBA中的错误处理

时间:2013-05-23 10:25:08

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

最近添加一些引用控件的新VBA代码后,我的代码将无法运行。在调查中,我发现问题是代码中涉及控件的拼写错误:我将其键入为 Me.CheckYearEmd (带有m)而不是 Me.CheckYearEnd

现在已经解决了,代码工作正常,但奇怪的是错误没有触发我的错误处理;它只是没有运行。我的错误处理工作非常简单:

On Error GoTo ErrHandler

... 'Rest of sub

Exit Sub

ErrHandler:
DoCmd.SetWarnings True
MsgBox "The database has generated an error. Please contact the database administrator, quoting the following error message: '" & Err.Description & "'", vbCritical, "Database Error"

是否有某些特定的内容涉及一个不存在的控件(正如我上面所做的那样)导致它绕过错误处理,是否有办法捕获这些错误?

1 个答案:

答案 0 :(得分:2)

我无法重现你描述的情况。当我在表单的代码中拼错控件名称时,从VB编辑器的主菜单运行Debug-> Compile会触发编译错误:“找不到方法或数据成员”

但是,如果我没有运行Debug-> Compile并且只是尝试使用拼写错误的名称运行表单的过程,我仍然会遇到编译错误。

虽然我无法复制你的情况,但我会猜测为什么程序的错误处理程序无法捕获它。指令On Error GoTo ErrHandler捕获运行时错误。但拼写错误的控件名称会触发编译错误。