gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:25:18 38 4
gpt4 key购买 nike

我正在 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 ,它声明了一个具有接口(interface)类类型的成员变量:
Private WithEvents mMy As IMyInterface

并尝试使用实现类的实例初始化此变量:
Set mMy = New MyClass

我收到运行时错误“459”:此组件不支持这组事件。

MSDN page对于此错误消息指出:

"You tried to use a WithEvents variable with a component that can't work as an event source for the specified set of events. For example, you may be sinking events of an object, then create another object that Implements the first object. Although you might think you could sink the events from the implemented object, that isn't automatically the case. Implements only implements an interface for methods and properties."



以上几乎总结了我正在尝试做的事情。措辞“并非自动如此”,而不是“这完全不可能”,似乎表明我需要做一些手动工作才能使其正常工作,但事实并非如此告诉我 什么 !有谁知道这在VBA中是否可行?

最佳答案

显然,不允许将事件通过接口(interface)类传递到具体类,就像您想使用“实现”一样。在这篇文章中它指出:“抽象接口(interface)的事件声明不包含在由具体类继承的接口(interface)中。我还没有发现任何地方承认这是一个错误;但是,它似乎确实是一个错误。 "

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

:-(

关于vba - 将 WithEvents 与实现另一个类的类一起使用时出现运行时错误 459,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3022879/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com