VBA 子クラスのClass_Initialize()がうごかないんです。 親クラスの中に、こんな記述をしました。 Private nCoop As New Coop
VBA 子クラスのClass_Initialize()がうごかないんです。 親クラスの中に、こんな記述をしました。 Private nCoop As New Coop でも、Coop の Class_Initialize()が無視されるんです。どうしてでしょう? よろしくお願いします。
Visual Basic・47閲覧・100
ベストアンサー
まず、変数の宣言時に Newする書き方をよく見かけますが、問題があるので止めた方がいいです。 >Private nCoop As New Coop 実は、これだけだと、インスタンスは作成されません。インスタンスが作成されないので、コンストラクター(Class_Initialize())も実行されません。 親クラス内のコンストラクターまたは他のプロシージャーでNewしないとだめです。 Private 子 As 子クラス Private Sub Class_Initialize() Set 子 = New 子クラス End Sub <参考> https://docs.microsoft.com/ja-jp/previous-versions/technical-document/dd297716(v=msdn.10)?redirectedfrom=MSDN
1人がナイス!しています
Microsoft が書いてるとおり、変数の宣言時にNewする書き方だと、 変数を利用するときにインスタンスが作成されます。 例えば下のように、子クラスのメンバーの値を取得しようとすると、子クラスのコンストラクターが実行されます。 ’<親クラス> Private 子 As New 子クラス Private Sub Class_Initialize() MsgBox 子.メンバー End Sub ’<子クラス> Public メンバー As Long Private Sub Class_Initialize() MsgBox \u0022Initialized\u0022 End Sub
質問者からのお礼コメント
ありがとうございました。 めちゃめちゃ助かりました。 \(^o^)/\(^o^)/\(^o^)/
お礼日時:1/22 7:07