|
▼つつ さん:
こんばんは。
>値渡しというのはどういう意味でしょうか?
↑これは、次回にしましょう!!
>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
これがパラメータ渡しです。
これらの例題コードとつつさんのコードとを
比べてみてください。
|
|