| 
    
     |  | ▼つつ さん: こんばんは。
 
 >値渡しというのはどういう意味でしょうか?
 ↑これは、次回にしましょう!!
 >Application.Run "macro2"
 >と書いていただけで
 
 だとするとパラメータ渡しということではなさそうなので・・・。
 
 ここからは、想像です。
 
 標準モジュールに
 '================================
 Sub macro1()
 Dim 変数i As Variant
 Application.Run "macro2"
 MsgBox 変数i
 End Sub
 '=========================
 Sub macro2()
 変数i = 500
 End Sub
 
 こんなコードで「変数iはEmptyです」とおっしゃっているのでしょうか?
 だとしたら、これは、そうなります。
 
 macro1の中の変数iとmacro2の中の変数iは、同じ名前の変数でも
 別の変数だと解釈されますから、macro1の変数iには500は入っていません。
 
 では、どうすればよいかと言うと、
 
 '==========================================================
 Private 変数i As Variant
 Sub macro1()
 Application.Run "macro2"
 MsgBox 変数i
 End Sub
 '==========================================================
 Sub macro2()
 変数i = 500
 End Sub
 
 とすればmacro1の
 Msgbox 変数i
 で500と表示されます。
 
 さらにこの場合、Runメソッドは必要ないので
 
 '========================================================
 Private 変数i As Variant
 Sub macro1()
 Call macro2
 MsgBox 変数i
 End Sub
 '=========================================================
 Sub macro2()
 変数i = 500
 End Sub
 
 
 記述できます。
 
 それとここからは、仕様にもよりますが、
 '==========================
 Sub macro1()
 Dim 変数i As Variant
 Call macro2(変数i)
 MsgBox 変数i
 End Sub
 '=======================================
 Sub macro2(Macro2の出力データ As Variant)
 Macro2の出力データ = 500
 End Sub
 
 これがパラメータ渡しです。
 
 これらの例題コードとつつさんのコードとを
 比べてみてください。
 
 |  |