Erro em tempo de execução 459 ao usar WithEvents com uma classe que implementa outra
Estou desenvolvendo um projeto VBA no Word e encontrei um problema ao lidar com eventos ao usar uma classe que implementa outra.
Eu defino uma classe vazia,IMyInterface
:
Public Sub Xyz()
End Sub
Public Event SomeEvent()
E uma aulaMyClass
que implementa o acima:
Implements IMyInterface
Public Event SomeEvent()
Public Sub Xyz()
' ... code ...
RaiseEvent SomeEvent
End Sub
Private Sub IMyInterface_Xyz()
Xyz
End Sub
Se eu criar uma terceira classe,OtherClass
, que declara uma variável de membro com o tipo da classe de interface:
Private WithEvents mMy As IMyInterface
e tente inicializar essa variável com uma instância da classe de implementação:
Set mMy = New MyClass
Eu recebo um erro em tempo de execução '459': este componente não suporta este conjunto de eventos.
oPágina MSDN para esta mensagem de erro afirma:
"Você tentou usar uma variável WithEvents com um componente que não pode funcionar como uma fonte de eventos para o conjunto especificado de eventos. Por exemplo, você pode estar afundando eventos de um objeto e, em seguida, criar outro objeto que Implementa o primeiro objeto. Embora você pode pensar que poderia afundar os eventos do objeto implementado, o que não é automaticamente o caso. Implementa apenas implementa uma interface para métodos e propriedades. "
O texto acima resume o que estou tentando fazer. A redação, "que não é automaticamente o caso", em vez de "isso é totalmente impossível", parece sugerir que há algum trabalho manual que eu preciso fazer para fazê-lo funcionar, mas não Conte-meo que! Alguém sabe se isso é possível no VBA?