很难为此提供准确的信息,组件很古老。只是一些背景。
UserForm 对象由 Microsoft Forms 2.0(一个 ActiveX 组件库)实现。它是一个通用库,可以将表单添加到任何应用程序,它不仅限于 Office 应用程序。您可以在计算机上的 c:\windows\syswow64\fm20.dll 中找到它(system32 用于 32 位计算机)。该组件的文档曾经由 fm20.chm 提供。Microsoft 不再提供此帮助文件,您仍然可以通过 google 查询找到它。但是,大多数提供它的网站看起来都很阴暗。 这个看起来最不粘。其实查看这个文件很麻烦,我可以浏览目录但没有页面显示文本了。
我发现的一种解决方法是使用 HTML Workshop 实用程序反编译该文件。这产生了一个名为 f3evtError.htm 的文件,它看起来像这样(针对内容进行了编辑):
错误事件
当控件检测到错误并且无法将错误信息返回给调用程序时发生。
句法
Private Sub object_Error( ByVal Number As Integer, ByVal Description As MSForms.ReturnString, _
ByVal SCode As SCode, ByVal Source As String, ByVal HelpFile As String, _
ByVal HelpContext As Long, ByVal CancelDisplay As MSForms.ReturnBoolean)
错误事件语法包含以下部分:
- 所需对象。有效的对象名称。
- 索引:必填。MultiPage 中与此事件关联的页面的索引。
- 编号:必填。指定控件用来识别错误的唯一值。
- 说明:必填。错误的文本描述。
- SCode:必填。指定错误的 OLE 状态代码。低 16 位指定与 Number 参数相同的值。
- 来源:必填。标识启动事件的控件的字符串。
- 帮助文件:必需。为描述错误的帮助文件指定一个完全限定的路径名。
- 帮助上下文:必需。指定包含错误描述的帮助文件主题的上下文 ID。
- 取消显示:必需。指定是否在消息框中显示错误字符串。
评论
为错误事件编写的代码确定控件如何响应错误条件。
处理错误条件的能力因应用程序而异。当发生应用程序无法处理的错误时,将启动 Error 事件。
不幸的是,这就是全部。这是模糊的,因为该组件可以在许多不同类型的 ActiveX 主机中使用,并且错误捕获是主机实现的细节。我认为最后一段是你真正要问的。我想说这是相当安全的假设,因为 Office 文档没有提到它,Office 应用程序实际上不会触发此事件。事件在 VBA 编辑器中仍然可见的事实只是对象模型工作方式的副作用。编辑器没有简单的方法将其过滤掉,它只是显示对象的所有已发布事件。