Ereigniss in Klassenmodul
28.03.2005 15:02:24
Bertram
hoffe ihr habt ein schönes Osterfest. Ich schlage mich leider wieder mal mit einem Problem herum.
Ich bilde mir ein in VBA recht fit zu sein, aber ich experimentiere zur Zeit mit AddIns und Klassenmodulen herum. Da ich das erste mal mit klassenmodulen programmiere, hoffe ich mein Problem verständlich rüber zu bringen.
Also: Ich möchte in einem AddIn eigene Ereignisse in ein Klassenmodul schreiben und benutzen. In der VBA-Hilfe fand ich dazu folgendes:
'Bevor Sie Ereignisse mit dem Application-Objekt verwenden können, müssen Sie ein neues Klassenmodul erstellen und ein Objekt des Typs Application mit Ereignissen deklarieren. Nehmen Sie beispielsweise an, ein neues Klassenmodul mit Namen EventClassModule wird erstellt. Es enthält folgenden Code:
Public WithEvents App As Application
Nachdem das neue Objekt mit Ereignissen deklariert worden ist, erscheint es in dem Object-Dropdown-Listenfeld im Klassenmodul, und Sie können Ereignisprozeduren dafür schreiben. (Wenn Sie das neue Objekt im Object-Feld auswählen, werden die für das Objekt gültigen Ereignisse im Procedure-Dropdown-Listenfeld aufgeführt.)
Bevor jedoch die Prozeduren ausgeführt werden können, müssen Sie das deklarierte Objekt im Klassenmodul mit dem Application-Objekt verbinden. Sie erreichen dies mit dem folgenden Code aus einem beliebigen Modul.
Dim X As New EventClassModule
Sub InitializeApp()
Set X.App = Application
End Sub
Nachdem Sie die InitializeApp-Prozedur ausgeführt haben, deutet das App-Objekt im Klassenmodul auf das Microsoft Excel Application-Objekt, und die Ereignisprozeduren im Klassenmodul werden ausgeführt, wenn die Ereignisse eintreten.'
So weit so gut. Das habe ich umgesetzt und es funktioniert. Allerdings funktionieren die Ereignisse nach beenden von Excel nicht mehr automatisch (logisch). Wo muss ich die Prozedur
Sub InitializeApp()
einfügen, damit die eigenen Ereignisse sofort nach dem Excelstart funktionieren?
Hoffe ich habe mich verständlich ausgedrückt.
Danke schon mal für jede Hilfe.
Gruß
Bertram