【发布时间】:2013-05-31 09:23:45
【问题描述】:
VBA 用户窗体中的错误,除了那些在初始化事件中发生的错误,似乎不会冒泡到调用方法。有什么方法可以强制错误冒泡吗?
VBA 用户表单包含一个名为 userform_error 的事件,定义为
Private Sub UserForm_Error(
ByVal Number As Integer,
ByVal Description As MSForms.ReturnString,
ByVal SCode As Long,
ByVal Source As String,
ByVal HelpFile As String,
ByVal HelpContext As Long,
ByVal CancelDisplay As MSForms.ReturnBoolean
)
当用户表单中发生错误时调用事件 UserForm_Error 似乎是合乎逻辑的,但情况似乎并非如此。事实上,我找不到任何关于 Userform_Error 的文档。
我已经搜索了 MSDN、Bing、Google、StackOverflow、DuckDuckGo,但我找不到一个好的方法,或者任何关于 UserForm_error 实际作用的文档。
【问题讨论】:
-
Excel VBA?访问 VBA?你能用代码举例说明你想做什么吗?
-
我认为这是不可能的。您有多少事件不想编写错误处理程序?
-
按钮点击时调用了多少这样的外部函数/方法?你可以做的是编写方法来包装这些外部 DLL 函数,捕获错误以进行日志记录。
-
只有在 VBA 编辑器不可用时才会调用错误事件,例如在 Access 中,如果您创建 MDE 并强制出错,例如在 Button_Click-Event 中将 1 除以 0,则错误事件将启动并捕获错误,但是如果您在普通 MDB 文件中引发错误,则如果错误照常发生,VBA-Editor 将保持在线状态。
-
根据帮助文件,只有当控件无法处理错误时才会引发此事件。您可以通过打开对象浏览器 -> 下拉列表中的“MSForms” -> 在类列表中选择“用户窗体”,然后右键单击“错误”事件来查看帮助文件