- ベストアンサー
プログラムを終了しても消えない変数
VBAを使っていて ユーザーフォーム上にボタンを二つ配置します。 ボタン1を押すとsub 1が実行されます。 このプログラムで出力された変数を ボタン2で実行するsub 2で使いたいのですが どうすれば良いですか? sub 1の中でcall subを使ってプログラム2を呼び出すということはしたくないのですが このsub を終了しても変数が消えないようにするには ワークシートのセルに代入するか ユーザーフォームのテキストボックスなどに代入するしかないでしょうか? この変数を外に出さずに隠さずに保存しておき 次のsub で使いたいのですが 何か良い方法はないでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
実際にコーディングをした訳ではないのですが、 前のプログラムが終了して、次のプログラムが直ちに起動されるという前提であれば、 その場合は、クリップボードが使えるでしょう。 前のプログラムで、変数の値をクリップボードへ出力し、それを 次のプログラムで、クリップボードから取り込むことは可能です。 但し、次のプログラムが取り込む前に、クリップボードを他のプログラム若しくは人間が 破壊していないことが、前提です。 もし、上記の方法が、使えない場合は、 一旦外部の資源に保存するしかないでしょう。 外部資源は、 ワークシートのセル、 ユーザーフォームのテキストボックス のほかに ファイル、レジストリなどが考えられます。
その他の回答 (2)
- ok-kaneto
- ベストアンサー率39% (1798/4531)
「プログラムを終了しても保存」ならばレジストリに保存しておくしかありません。 あまりオススメはしませんが。 http://officetanaka.net/excel/vba/tips/tips43.htm
- pringlez
- ベストアンサー率36% (598/1630)
プログラミング初心者の方なんですかね。それを前提として答えますが、そのような場合はどんな言語にも共通して言えることですが「グローバル変数を使う」ことが基本となります(もしくはパブリック変数とも言います)。VBAでグローバル変数を宣言する方法は以下を参照してください。 Office TANAKA - VBAの変数[変数の適用範囲] http://officetanaka.net/excel/vba/variable/05.htm Excel VBA (その一) 変数、定数、ダイアログ、マクロ - SAK Streets http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_e61.htm
お礼
グローバル変数であっても 一度プログラムを終了するとリセットされてしまうのですが どうすればプログラムを終了しても値を消えないようにできますか?
お礼
やはりそうですよね ありがとうございます。