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中使用?
显然,不允许事件通过接口类传递到具体类中,就像您要使用"Implements"一样.在本文中,它指出:"抽象接口的事件声明不包含在由具体类继承的接口中.我没有发现任何地方已经被确认为错误;但是,它似乎确实是一个错误. "
以下是源代码的链接:http://www.devx.com/getHelpOn/10MinuteSolution/20416
:-(
| 归档时间: |
|
| 查看次数: |
2301 次 |
| 最近记录: |