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

フォームモジュールと標準モジュールで同じ変数を使って値を行き来したい場合、
標準モジュールにpublicで宣言するしかないのでしょうか?

【フォームモジュール】
Private Sub cmd_コマンド0_Click()
test = "aaa"
Call 標準モジュールtest
End Sub

【標準モジュール】
Public test As String
Sub 標準モジュールtest()
MsgBox test
End Sub

でいいのですか?

A 回答 (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
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2012/12/25 23:45

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