dポイントプレゼントキャンペーン実施中!

VBAを使っていて
ユーザーフォーム上にボタンを二つ配置します。

ボタン1を押すとsub 1が実行されます。
このプログラムで出力された変数を
ボタン2で実行するsub 2で使いたいのですが
どうすれば良いですか?

sub 1の中でcall subを使ってプログラム2を呼び出すということはしたくないのですが
このsub を終了しても変数が消えないようにするには
ワークシートのセルに代入するか
ユーザーフォームのテキストボックスなどに代入するしかないでしょうか?
この変数を外に出さずに隠さずに保存しておき
次のsub で使いたいのですが
何か良い方法はないでしょうか?

A 回答 (3件)

実際にコーディングをした訳ではないのですが、


前のプログラムが終了して、次のプログラムが直ちに起動されるという前提であれば、
その場合は、クリップボードが使えるでしょう。
前のプログラムで、変数の値をクリップボードへ出力し、それを
次のプログラムで、クリップボードから取り込むことは可能です。
但し、次のプログラムが取り込む前に、クリップボードを他のプログラム若しくは人間が
破壊していないことが、前提です。
もし、上記の方法が、使えない場合は、
一旦外部の資源に保存するしかないでしょう。
外部資源は、
ワークシートのセル、
ユーザーフォームのテキストボックス
のほかに
ファイル、レジストリなどが考えられます。
    • good
    • 0
この回答へのお礼

やはりそうですよね

ありがとうございます。

 

お礼日時:2015/01/23 18:19

「プログラムを終了しても保存」ならばレジストリに保存しておくしかありません。


あまりオススメはしませんが。

http://officetanaka.net/excel/vba/tips/tips43.htm
    • good
    • 0

プログラミング初心者の方なんですかね。

それを前提として答えますが、そのような場合はどんな言語にも共通して言えることですが「グローバル変数を使う」ことが基本となります(もしくはパブリック変数とも言います)。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 …
    • good
    • 0
この回答へのお礼

グローバル変数であっても
一度プログラムを終了するとリセットされてしまうのですが

どうすればプログラムを終了しても値を消えないようにできますか?
 

お礼日時:2015/01/23 15:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!