Jestem w programie Excel 2010 i wydaje mi się, że otrzymuję dziwne, raczej nieoczekiwane, zachowanie przy niestandardowych zdarzeniach.Zdarzenie niestandardowe nie jest uruchamiane
Jestem jak 99% pewien, że to podejście pracował dla mnie kilka lat temu (może to było w programie Excel 03/07 - nie pamiętam)lubmoże ja właśnie zawiedli coś ...
Oto repro:
Dodaj nowy moduł klasy i nazwij go Factory
Public Event AfterInitialize()
Private Sub Class_Initialize()
RaiseEvent AfterInitialize
End Sub
dodać kolejny moduł klasy i nazwa jest FactoryTest
Private WithEvents cFactory As Factory
Private Sub Class_Initialize()
Set cFactory = New Factory
End Sub
Private Sub cFactory_AfterInitialize()
Debug.Print "after inialized..."
End Sub
i standard Module1
i uruchomić poniżej
Sub Main()
Dim fTest As FactoryTest
Set fTest = New FactoryTest
End Sub
W tym momencie ja spodziewałem się zobaczyć after initialized..
w oknie Immediate ale ja nie ...
nasilenia poprzez kod wydaje się, że nigdy nie zostanie osiągnięty Private Sub cFactory_AfterInitialize()
...
Uwaga:
mogę dodać Public Sub: RaiseAfterInitialize()
do klasy Factory
a następnie wywołać jawnie w wypadku w FactoryTest
jak cFactory.RaiseAfterInitialize()
Initialize()
tak, że może być możliwe pracę wokół, ale co ja naprawdę starają się zrozumieć, dlaczego to robi działa w oryginalny sposób pokazany powyżej?
There isn't much on VBA events on MSDN
Czy ktoś może wskazać, co robię źle?
Czy nie powinien to być po prostu 'Factory_AfterInitialize()'? –
zdecydowanie nie :) –
Podejrzewam, że to wyczucie czasu. Klasa Factory nie zakończyła inicjowania, więc zdarzenie jest wywoływane, zanim zmienna w klasie FactoryTest zostanie przypisana lub nastąpi zaniknięcie. – Rory