• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル VBA Call)

エクセルVBAでCallを使って呼び出し元の変数と同じ値を使用する方法

このQ&Aのポイント
  • VBA初心者のため、Callという機能を知りました。質問文章では、呼び出し元の変数と同じ値を使用する方法を教えてほしいとのことです。
  • 問題のあるコードの一部を示しており、変数yと変数xの値をCallで呼び出し元に使用する方法について具体的なアドバイスを求めています。
  • 質問者はExcelにおいて、yとxという変数を定義し、その値を呼び出し元に渡す方法を知りたいと述べています。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

方法1) sub macro1()  dim i as long  for i = 1 to 3   call m1(i)  next i end sub sub m1(byval a1 as long)  worksheets(a1).select end sub このような方法を「引数渡し」と言います。 渡された方のm1では,引数として新しい「自分の中で宣言した変数」a1に渡されたiの値を格納して自分の中で使うので,元のマクロのiを使うのではない事に注意してください。この方法は「値渡し」と言う事もあります。 方法2) dim i as long sub macro2()  for i = 1 to 3   call m2  next i end sub sub m2()  worksheets(i).select end sub このような方法を「モジュールレベルの変数の宣言」と言います。 モジュールというのはマクロを書いているシートのことです。 変数iはモジュールの先頭(最初のMacro2の外)で宣言されていて,そのモジュールに書かれているどのマクロからも共通で(内容を保持したまま)利用できます。 方法3) 「参照渡し」という方法も使えます。キーワードをググってみると参考になる資料も沢山ヒットしますので,興味があるなら勉強してみてください。

mogurayama
質問者

お礼

早速のご回答有難う御座います。パソコン大先生!! また、直に色々質問してしまうのですが 今後ともお願いします。 「引数渡し」というんですね。 専門用語ってすぐ忘れちゃうんですよね。(;ω;

その他の回答 (1)

  • sykt1217
  • ベストアンサー率34% (277/798)
回答No.2

呼び出し元で Call m1(x, y) とし、 呼び出し先で Sub m1(x As Integer, y As Integer) などとすれば、x、yをそのまま渡せます。 別プロシージャに値を引き継ぐことを「引数」と言います。 渡し方はx、yをモジュール変数にしたりと、色々な方法があります。

mogurayama
質問者

お礼

素早い回答有難う御座います。 なるほど、兎に角やってみます。 モジュール変換・・・勉強します。 (・ω・ ヾ

関連するQ&A