Я разрабатываю проект VBA в Word и столкнулся с проблемой обработки событий при использовании класса, который реализует другой.
Я определяю пустой класс, 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
, который объявляет переменную-член с типом класса интерфейса:
Private WithEvents mMy As IMyInterface
и попытайтесь инициализировать эту переменную экземпляром класса реализации:
Set mMy = New MyClass
Я получаю ошибку во время выполнения «459»: этот компонент не поддерживает этот набор событий.
Страница MSDN для этого сообщения об ошибке гласит:
"Вы пытались использовать переменную WithEvents с компонентом, который не может работать как событиеисточник для указанного набора событий. Например, вы можете опускать события объекта, а затем создать другой объект, который реализует первый объект. Хотя вы можете подумать, что вы можете получать события из реализованного объекта, это не является автоматическимнаглядный пример.Реализует только реализует интерфейс для методов и свойств. "
Вышеприведенное в значительной степени подводит итог того, что я пытаюсь сделать. Формулировка" это не так автоматически ", а не"это совершенно невозможно », кажется, предполагает, что есть некоторая ручная работа, которую я должен сделать, чтобы заставить ее работать, но она не говорит мне что ! Кто-нибудь знает, если этовозможно в VBA?