- ベストアンサー
Callステートメント(エクセル)
Sub test() Set x = Application.InputBox(Prompt:="テスト", Type:=8) スクリプト Call abc Call def Call ghi スクリプト End Sub 上記マクロで、"x"が"Call"で指定したプロシージャ内でも使えるようにするには、どのような指定が必要になるでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> "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は省略しても良いです。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
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
お礼
有難うございました。
Call abc(x) Call abc(x,y,z) このように、関数定義の中のカッコ内にリストされた変数を一般にパラメータと呼びます。 関数呼び出しに使われる値は引数(argument)といいます。 同じ区別を行うのに、仮引数および実引数ということばが使われることもあります。 つまり、関数への値の渡しはカッコ内に変数を記述することで実現します。
お礼
有難うございました。
- osamuy
- ベストアンサー率42% (1231/2878)
Call abc( x ) ――みたいに指定します。
お礼
有難うございました。
お礼
有難うございました。