usar son refrescar que para pantalla modulos los listas como codigo clases clase vba ms-word word-vba

vba - son - Error de tiempo de ejecución 459 al usar WithEvents con una clase que implementa otro



para que son los modulos de clase vba (1)

Aparentemente, no se permite que los eventos pasen a través de una clase de interfaz a la clase concreta que desee utilizando "Implementos". En este artículo dice: "Las declaraciones de eventos de la interfaz abstracta no están incluidas en la interfaz heredada por clases concretas. No he encontrado en ningún lugar que esto haya sido reconocido como un error, sin embargo, parece ser uno. "

Aquí está el enlace a la fuente: http://www.devx.com/getHelpOn/10MinuteSolution/20416

:-(

Estoy desarrollando un proyecto de VBA en Word y he encontrado un problema con el manejo de eventos cuando uso una clase que implementa otro.

IMyInterface una clase vacía, IMyInterface :

Public Sub Xyz() End Sub Public Event SomeEvent()

Y una clase, MyClass que implementa lo anterior:

Implements IMyInterface Public Event SomeEvent() Public Sub Xyz() '' ... code ... RaiseEvent SomeEvent End Sub Private Sub IMyInterface_Xyz() Xyz End Sub

Si creo una tercera clase, OtherClass , que declara una variable miembro con el tipo de la clase de interfaz:

Private WithEvents mMy As IMyInterface

e intente inicializar esta variable con una instancia de la clase implementadora:

Set mMy = New MyClass

Obtengo un error en tiempo de ejecución ''459'': este componente no admite este conjunto de eventos.

La página de MSDN para este mensaje de error dice:

"Intentó usar una variable WithEvents con un componente que no puede funcionar como un origen de eventos para el conjunto de eventos especificado. Por ejemplo, puede estar hundiendo eventos de un objeto y luego crear otro objeto que Implemente el primer objeto. podría pensar que podría hundir los eventos desde el objeto implementado, que no es automáticamente el caso. Implements solo implementa una interfaz para métodos y propiedades ".

Lo anterior más o menos resume lo que estoy tratando de hacer. La fraseología, "eso no es automáticamente el caso", en lugar de "esto es completamente imposible", parece sugerir que hay algo de trabajo manual que debo hacer para que funcione, pero no funciona. ¡dime que ! ¿Alguien sabe si esto es posible en VBA?