掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
フォームモジュールで宣言したパブリック変数の扱いは? (ID:116695)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
フォームモジュールで宣言したパブリック変数の扱いで質問があります。 下記のようなテストプログラムを作って実行してみました。 Form1のCommand1ボタンをクリックするとForm2をモーダルダイアログで表示し Form2のCommand1ボタンでForm2のテキストボックスの値をForm2のパブリック変数 に格納して自信をUnloadします。 'Form1のボタン Private Sub Command1_Click() Form2.Show vbModal Debug.Print Form2.Test 'この段階ではForm2_Loadイベントが実行されず23が返される Debug.Print Form2.Text1.Text 'この段階ではForm2_Loadイベントがされ23が返される End Sub 'Form2のGeneral Option Explicit Public Test As Long 'Form2のLoadイベント処理 Private Sub Form_Load() Debug.Print "LOAD" Text1.Text = Format(Test) End Sub 'Form2のボタンクリック処理 Private Sub Command1_Click() Test = CLng(Text1.Text) Unload Me End Sub これを実行するとイミディエートウィンドウに下記のようにメッセージが表示されます。 LOAD ← Form2.Show vbModal の処理でForm2_Loadイベント処理が実行された 23 ←Form1のDebug.Print Form2.Test の処理で23が表示された(Form2のテキストボックスに23と入力したため) LOAD ←Debug.Print Form2.Text1.Text の処理でForm2_Loadイベント処理が実行された 23 ←←Debug.Print Form2.Text1.Text の処理でForm2.Text1.Textの内容が表示された そこで質問なんですが、Form2に宣言したパブリック変数の扱いはどうなっているのでしょうか? Form2のオブジェクトの1つであればDebug.Print Form2.Testと実行するとForm2が再びロードされるような気がしますが 実際はロードされません。しかし、Form2をUnloadした後でも参照可能です。 もしかして、Form2はUnloadされていないのでしょうか? それともフォームモジュールで宣言したパブリック変数はフォームオブジェクトと別のメモリ管理がされるのでしょうか? その場合、フォームモジュールで宣言したパブリック変数をメモリ上から解放するということができないのでしょうか? Unloadした後も一応値が参照できるので、その値を使っていますが、なぜ使用可能なのか分からないので不安です。 長文になりましたが、よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.