- ベストアンサー
標準モジュールにpublicで宣言するしかない?
フォームモジュールと標準モジュールで同じ変数を使って値を行き来したい場合、 標準モジュールにpublicで宣言するしかないのでしょうか? 【フォームモジュール】 Private Sub cmd_コマンド0_Click() test = "aaa" Call 標準モジュールtest End Sub 【標準モジュール】 Public test As String Sub 標準モジュールtest() MsgBox test End Sub でいいのですか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 標準モジュールにpublicで宣言するしかないのでしょうか? 例えば、「自身のPath」のように実行後の変動がないものや、 「ファイルのプロパティ」のように呼出元によらず共通になるもの などは、「標準モジュールにPublicで宣言」でいいと思いますが、 「ある処理の開始時間と終了時間」のように【都度変化する 値】のような場合は「SubやFunctionの引数として渡す」という 方法を採った方がよいかと思います。 (そうした方が、「うっかり古いままの値を使用してしまった」と いった失敗を防げる、と) この場合、「フォームモジュールのSubの中」と「Subの引数」の 2箇所で、同じ値を受け取る変数を宣言することになります。 (もしくは、下で「または~」としたように、フォームモジュール側での 変数宣言はせずに、引数に直接記述) 【フォームモジュール】 Private Sub cmd_コマンド0_Click() Dim test As String test = "aaa" Call 標準モジュールtest(test) 'または、変数「test」は宣言せずに文字列を引数に直接記述 'Call 標準モジュールtest("aaa") End Sub 【標準モジュール】 Sub 標準モジュールtest(test As String) MsgBox test End Sub
お礼
ご回答ありがとうございます。