- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA Public変数の値が初期化されません)
VBA Public変数の初期化に関する質問
このQ&Aのポイント
- VBAのPublic変数の値が再実行時に初期化されずに残る現象について質問させていただきます。
- 現象として、コードを再実行するとPublic変数の値が初期化されずに前回の値が残ってしまいます。
- エクセル2010での検証の結果、エディタの「リセット」ボタンや「デザインモード」ボタンを押すことで値が初期化されることが分かりましたが、明示的に初期化する方法はあるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Publicだからというより、モジュールレベルで宣言された変数だから、再実行時に初期化されない。初期化したければ自分でやる(そういうコードを書く)
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10358)
回答No.2
Public変数は、subやfunctionの外にある変数なので、subが実行し終わったくらいのことで初期化されることはありません。値を保持してくれないと困ります。 プログラムを編集したりすると、当然のことながら初期化されます。
質問者
お礼
ご回答どうもありがとうございます!!m(_ _)m >subやfunctionの外にある変数なので、subが実行し終わったくらいのことで初期化されることはありません。値を保持してくれないと困ります。 全SUBを実行し終わると(=実行しているプログラムが1つも無い状態)同時に 全ての変数は開放されるのだと思っておりました。。。 という事は、「自動で消えるようにする」にはSUB内で宣言して引数で渡さないといけないわけですね。 勉強になりました!この度はご親切に誠にありがとうございました。m(_ _)m
お礼
どうもありがとうございます!m(_ _)m >モジュールレベルで宣言された変数だから、 モジュールレベルではなく、プロシージャ単位で宣言しないと消えないのが普通なのですね。 存じませんでした。(×_×; てっきり「全プログラムが終了している状態」になると消えるものとばかり考えておりました。 今後、初期化コードを記述するようにいたします。 お教えいただきどうもありがとうございました。m(_ _)m