在 VBA 中实现接口的事件
Posted
技术标签:
【中文标题】在 VBA 中实现接口的事件【英文标题】:Implementing interface's event in VBA 【发布时间】:2019-02-27 13:19:00 【问题描述】:我有一个界面IView:
Option Explicit
Public Event OnClientSelected()
Public Property Get ClientNames() As Variant
End Property
(...)
但我无法在我的用户表单中实现该事件。允许实现属性和子类,但不允许实现事件。
可以用事件做接口实现吗?
【问题讨论】:
你是否以WithEvents的形式声明了IView对象? 我希望表单是接口的实现,所以我没有 IView 对象。我使用:实现 IView 一个MCVE 会很好。我认为您不能直接拥有事件处理和接口(WithEvents 和 Implements)。见***.com/questions/41023670/… 不,这是不可能的。验证这一点的最佳方法是不实现Event
以及接口的其余部分。这仍然可以编译 - 如果 Event
被认为是接口的一部分,你会得到一个编译错误。
【参考方案1】:
你使用 withevents 了吗?
我已完成以下操作,为您的班级添加了 test
函数
Private WithEvents iface As clsIface
Private Sub UserForm_Initialize()
Set iface = New clsIface
End Sub
Private Sub iface_OnClientSelected()
' Event subscription
End Sub
Private Sub UserForm_Click()
iface.test
End Sub
添加到类的函数
Public Function test()
RaiseEvent OnClientSelected
End Function
【讨论】:
以上是关于在 VBA 中实现接口的事件的主要内容,如果未能解决你的问题,请参考以下文章