Excel VBA 質問スレ Part22
■ このスレッドは過去ログ倉庫に格納されています
0421デフォルトの名無しさん
2011/12/24(土) 05:56:28.60Loadは命令。Initialize、Activateはその結果実行されるプロシージャ(イベント)
Initializeはそのフォーム(のインスタンス)で1回しか起きないが、Activateは何回でも起きる(可能性がある)
Unloadも命令。Terminateはその結果起きるイベント
>>415
どうせならもうちょっと正確に書け
LoadとUnloadはメソッドじゃない。ステートメントだ
オブジェクト(フォーム)に定義されている命令ではなく、VBA言語に定義されている命令
LoadでInitializeイベントが起きるのも、ShowでActivateイベントが起きるのも結果に過ぎないぞ
ShowしなくてもActivateイベントは(そういう状況になれば)起こるし、HideしなくてもDeactivateイベントも起こる
こっから先は気にしなくてもいいかもしれんが、実験すると
Loadする前にインスタンス生成した段階でInitializeイベントは起こる
まあこれは解る
Unloadするとその時点でTerminateイベントが起こる
どうもインスタンスへの参照が無効になるっぽい。これはちょっと嫌な仕様だ
Unloadしないでインスタンスへの参照を削除した場合、Terminateイベントが起こってないかもしれん
デストラクタはあてにするなって事か
とりあえずLoadとUnloadメソッドは忘れて、Terminateイベントは無いものとして扱うのがいいんじゃないかな
ついでに実験中に気付いたこと
UserForm1.Show vbModeless
MsgBox "表示しました"
このコード走らすと初回表示のActivateイベントが発生しなくなる
これってバグじゃねえかと
■ このスレッドは過去ログ倉庫に格納されています