掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
フォームモジュールで宣言したパブリック変数の扱いは? (ID:116701)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
MSDNのご指摘の箇所を読んでみたところ 「作成されているがロードされていない状態に戻る」 のところにフォームがアンロードされた後でも 「オブジェクトはまだ資源とメモリを保持しています。 フォームのコード部分のモジュール レベル変数に入っている すべてのデータは、まだ存在しています。 ただし、イベント プロシージャの静的変数はもう存在しません。」 という一文がありました。 これを自分なりに解釈した結果、フォームモジュールで宣言した パブリック変数がフォームをUnloadしても保持されているのは 「フォームのコード部分のモジュール レベル変数に入っている すべてのデータは、まだ存在しています」という仕様だと考えました。 そこで、テストプログラムを下記の様に変更し、上記仕様を確認 しました。 'Form1のコマンドボタン Private Sub Command1_Click() Form2.Show vbModal Debug.Print Form2.Test Set Form2 = Nothing Set Form2 = New Form2 Debug.Print Form2.Test End Sub 'Form2のInitializeイベント Private Sub Form_Initialize() Debug.Print "Initalize" End Sub 'Form2のLoadイベント Private Sub Form_Load() Debug.Print "Load" Text1.Text = Format(Test) End Sub 'Form2のUnloadイベント Private Sub Form_Unload(Cancel As Integer) Debug.Print "Unload" End Sub 'Form2のTerminateイベント Private Sub Form_Terminate() Debug.Print "Terminate" End Sub これを実行するとイミディエートイベントではの様に表示され Initalize Load Unload 23 Terminate Initalize 0 Terminate ←これはプログラムを終了した時に表示された。 フォームがUnloadされてもTerminateされていないため 「フォームのコード部分のモジュール レベル変数に入っている すべてのデータは、まだ存在しています」 の状態が確認できました。 また、Form2を完全に消去後は変数が初期化されていることも 確認できました。 これで安心してフォームモジュールで宣言したパブリック変数の 参照ができます。また、VBの仕組みについても1つ踏み込んで 理解する事ができました。 回答をいただいた皆さん、ありがとうございました。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.