我正在使用Word开发一个VBA项目,并且在使用实现另一个类的类时遇到了处理事件的问题。
我定义了一个空类IMyInterface
:
Public Sub Xyz()
End Sub
Public Event SomeEvent()
实现上述的类MyClass
:
Implements IMyInterface
Public Event SomeEvent()
Public Sub Xyz()
' ... code ...
RaiseEvent SomeEvent
End Sub
Private Sub IMyInterface_Xyz()
Xyz
End Sub
如果我创建了第三个类OtherClass
,它声明了一个带有接口类类型的成员变量:
Private WithEvents mMy As IMyInterface
并尝试使用实现类的实例初始化此变量:
Set mMy = New MyClass
我收到运行时错误'459':此组件不支持这组事件。
此错误消息的MSDN page说明:
“您尝试使用WithEvents 变量与组件不能 作为活动的来源 指定的事件集。例如, 你可能正在沉没事件 对象,然后创建另一个对象 实现第一个对象。 虽然你可能认为你可以 从实施中吸收事件 对象,那不是自动的 案件。实现只实现一个 方法和属性的接口。“
以上几乎总结了我正在努力做的事情。措辞,“这不是自动的情况”,而不是“这是不可能的”,似乎表明我需要做一些手工工作才能让它工作,但它没有告诉我什么!有人知道这是否可以在VBA中使用?
答案 0 :(得分:5)
显然不允许事件通过接口类传递到具体类中,就像您要使用“Implements”一样。在本文中,它指出:“抽象接口的事件声明不包含在由具体类继承的接口中。我没有发现任何地方已经被确认为错误;但是,它似乎确实是一个错误。 “
以下是指向来源的链接:http://www.devx.com/getHelpOn/10MinuteSolution/20416
: - (