• ベストアンサー

Callステートメント(エクセル)

Sub test()  Set x = Application.InputBox(Prompt:="テスト", Type:=8)   スクリプト    Call abc    Call def    Call ghi   スクリプト End Sub 上記マクロで、"x"が"Call"で指定したプロシージャ内でも使えるようにするには、どのような指定が必要になるでしょうか?

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

  • ベストアンサー
  • masa_019
  • ベストアンサー率61% (121/197)
回答No.2

> "x"が"Call"で指定したプロシージャ内でも使えるようにするには・・・ 簡単なのは、xを宣言セクションで宣言してモジュールレベルの変数にする方法だと思います。 Option Explicit Dim x As Object ←☆ここで宣言する Sub test() Set x = Application.InputBox(Prompt:="テスト", Type:=8) Call abc End Sub Sub abc MsgBox x.Address End Sub 上記のようにすると、xはモジュール内の他のプロシージャ内で自由に使えます。 他にもCallで呼び出す時に引数として渡す方法もあります。 下のようにして、xをabcプロシージャに渡します。 Option Explicit Sub test() Dim x As Object Set x = Application.InputBox(Prompt:="テスト", Type:=8) Call abc(x) End Sub Sub abc(ByRef x As Object) MsgBox x.Address End Sub この場合、ByRefは省略しても良いです。

kayonon
質問者

お礼

有難うございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

Sub test() Set X = Application.InputBox(Prompt:="テスト", Type:=8) abc X End Sub Sub abc(X) MsgBox X.Address End Sub で動きました。 Callを使うなら、Call abc(X)です。 本当は モジュールレベル変数 Private X を 宣言部に書く。(または Private x As Range) 下記「モジュールレベル変数は Private なものです。 」参照。 http://www.bcap.co.jp/hanafusa/VBHLP/hensu.htm http://homepage1.nifty.com/CavalierLab/lab/vb/implicit.html

kayonon
質問者

お礼

有難うございました。

noname#22222
noname#22222
回答No.3

Call abc(x) Call abc(x,y,z) このように、関数定義の中のカッコ内にリストされた変数を一般にパラメータと呼びます。 関数呼び出しに使われる値は引数(argument)といいます。 同じ区別を行うのに、仮引数および実引数ということばが使われることもあります。 つまり、関数への値の渡しはカッコ内に変数を記述することで実現します。

kayonon
質問者

お礼

有難うございました。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

Call abc( x ) ――みたいに指定します。

参考URL:
http://office.microsoft.com/ja-jp/assistance/HA010188011041.aspx?mode=print
kayonon
質問者

お礼

有難うございました。

関連するQ&A

専門家に質問してみよう