VBA自定义事件的多个侦听器
在VBA(MS Word)中,是否可以为自定义事件设置多个侦听器?我根据创建了一个自定义事件:但我真正想要的是有多个侦听器 一个事件只针对它所关联的实例触发似乎是合乎逻辑的,但我想在事件发生时触发几个地方的代码。。。可能吗 修改上述代码表参考: FactoryTest呼叫工厂。工厂引发了一个事件。FactoryTest侦听事件并响应 添加一个新的类模块并将其命名为FactoryVBA自定义事件的多个侦听器,vba,events,ms-word,Vba,Events,Ms Word,在VBA(MS Word)中,是否可以为自定义事件设置多个侦听器?我根据创建了一个自定义事件:但我真正想要的是有多个侦听器 一个事件只针对它所关联的实例触发似乎是合乎逻辑的,但我想在事件发生时触发几个地方的代码。。。可能吗 修改上述代码表参考: FactoryTest呼叫工厂。工厂引发了一个事件。FactoryTest侦听事件并响应 添加一个新的类模块并将其命名为Factory Public Event AfterInitialize() Private Sub Class_Initialize
Public Event AfterInitialize()
Private Sub Class_Initialize()
End Sub
Public Sub test()
RaiseEvent AfterInitialize
End Sub
添加另一个类模块,名称为FactoryTest
Private WithEvents cFactory As Factory
Private Sub Class_Initialize()
Set cFactory = New Factory
cFactory.test
End Sub
Private Sub cFactory_AfterInitialize()
Debug.Print "after inialized..."
End Sub
并使用下面的代码添加一个标准模块
Sub Main()
Dim fTest As FactoryTest
Set fTest = New FactoryTest
End Sub
希望我能正确理解你的问题。如果您需要所有
FactoryTests
响应单个事件,您可能需要将对一个常见Factory
的引用传递给所有FactoryTests
实例,而不是在每个FactoryTest
中创建一个新实例。嗯
标准模块,这里创建了Factory
的公共实例,并创建了两个FactoryTests
,它们都响应Factory
的相同事件
Factory test class模块,在每个模块接收对一个公共工厂实例的引用的位置创建多个
名为FactoryTest1
和FactoryTest2
的两个工厂测试类的输出
所以简而言之我想要另一个名为Factory2的类模块,它将能够使用与Factory使用的相同事件…是的,可以有多个侦听器,只需创建另一个类,如FactoryTest
,在其中声明和创建类Factory
的实例,并以与类FactoryTest
中相同的方式添加事件处理程序。还是我误解了你的问题?嗨,迪-谢谢你的评论。我想我试过了,是的,我可以让FactoryTest2捕获来自Factory的事件,但到目前为止,每个FactoryTestx都是它自己的Factory实例,我无法让FactoryTest和FactoryTest2捕获相同的事件。基本上,我想提出一个单一的事件,我所有的FactoryTests都将捕获/响应。。。我希望这是有道理的!?是的,我想我们在同一页-我会测试一下,然后再给你回复,非常感谢:-D
Option Explicit
Sub Main()
Dim myFactory As Factory
Set myFactory = New Factory
Dim test1 As FactoryTest1
Dim test2 As FactoryTest2
Set test1 = New FactoryTest1
Set test2 = New FactoryTest2
Set test1.FactoryInstance = myFactory
Set test2.FactoryInstance = myFactory
myFactory.test
End Sub
Option Explicit
Private WithEvents cFactory As Factory
Private Sub cFactory_AfterInitialize()
Debug.Print "after inialized..." & VBA.TypeName(Me)
End Sub
Public Property Get FactoryInstance() As Factory
Set FactoryInstance = cFactory
End Property
Public Property Set FactoryInstance(ByRef factoryObject As Factory)
Set cFactory = factoryObject
End Property
after inialized...FactoryTest1
after inialized...FactoryTest2