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

时间:2010-06-11 12:58:24

标签: vba ms-word word-vba

我正在使用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中使用?

1 个答案:

答案 0 :(得分:5)

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

以下是指向来源的链接:http://www.devx.com/getHelpOn/10MinuteSolution/20416

: - (