将WithEvents与实现另一个的类一起使用时的运行时错误459

Ken*_*nan 7 vba ms-word word-vba

我正在使用Word开发VBA项目,并且在使用实现另一个类的类时遇到了处理事件的问题.

我定义了一个空类,IMyInterface:

Public Sub Xyz()
End Sub

Public Event SomeEvent()
Run Code Online (Sandbox Code Playgroud)

还有一个MyClass实现上述的类:

Implements IMyInterface

Public Event SomeEvent()

Public Sub Xyz()
  ' ... code ...
  RaiseEvent SomeEvent
End Sub

Private Sub IMyInterface_Xyz()
   Xyz
End  Sub
Run Code Online (Sandbox Code Playgroud)

如果我创建第三个类,则OtherClass声明一个具有接口类类型的成员变量:

Private WithEvents mMy As IMyInterface
Run Code Online (Sandbox Code Playgroud)

并尝试使用实现类的实例初始化此变量:

Set mMy = New MyClass
Run Code Online (Sandbox Code Playgroud)

我得到一个运行时错误'459':该组件不支持这组事件.

此错误消息的MSDN页面指出:

"您尝试将WithEvents变量与不能用作指定事件集的事件源的组件一起使用.例如,您可能正在沉没对象的事件,然后创建另一个实现第一个对象的对象.你可能认为你可以从实现的对象中吸收事件,这不是自动的情况.Entruments只实现方法和属性的接口."

以上几乎总结了我正在尝试做的事情.措辞,"这不是自动的情况",而不是"这是不可能的",似乎表明我需要做一些手工工作才能让它工作,但它没有告诉我什么!有人知道这是否可以在VBA中使用?

Fin*_*ink 5

显然,不允许事件通过接口类传递到具体类中,就像您要使用"Implements"一样.在本文中,它指出:"抽象接口的事件声明不包含在由具体类继承的接口中.我没有发现任何地方已经被确认为错误;但是,它似乎确实是一个错误. "

以下是源代码的链接:http://www.devx.com/getHelpOn/10MinuteSolution/20416

:-(