• ベストアンサー

これは参照渡し・値渡ししてる事になりますか?

Dim a As String Sub マクロ1() a = "test" Call マクロ2 a = Empty End Sub Sub マクロ2() MsgBox a End Sub これは参照渡し・値渡ししてる事になりますか? ByRefやByValを使わない限り、 参照渡しまたは値渡ししてるとは言えないのでしょうか? ご回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • trajaa
  • ベストアンサー率22% (2662/11921)
回答No.2

え? 何処で渡しているの? 何も渡しておらず、単にマクロ2側が特定の変数を参照しているだけ マクロ2はどんな時でも同一の変数を参照しているだけ 引数で渡すという事は、渡す側が任意の変数又はイミディエート値を渡してもサブ関数側で同じように処理してくれる事を意味する この例で言えば、マクロ1側が変数aでは都合が悪い場合には、マクロ3を新たに準備しなければ成らず非効率

weuari3
質問者

お礼

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

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10361)
回答No.1

サブルーチン呼び出し時に何も渡していないので、参照渡しでも値渡しでもありません。 強いて言うなら、「グローバル変数を使っている」ですね。

weuari3
質問者

お礼

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