引数を渡してプロシージャを実行する

引数付きのプロシージャの作成方法と呼び出し方法について

'セルを引数に持つプロシージャ
Sub 呼出テスト(引数 As Range)

End Sub

プロシージャの呼び出しにはCallステートメントを使用します
この時に引数付きのプロシージャを実行する事ができます

その際には呼び出し先のプロシージャで引数の設定を行う必要があります

関数と同様にプロシージャ名の隣の「()」の中に指定を行います
通常引数の無い場合は、空白状態になっています

ここは引数を設定するための場所になります

引数は、変数と同じものを指定します
書き方も変数の宣言と同じものになります

実際の処理の動き

Sub 処理テスト()

 Call 呼出テスト(Range("A1"))

 Call 呼出テスト(Range("A1:A10"))

End Sub

Sub 呼出テスト(引数 As Range)

Debug.Print 引数.Address

End Sub

処理の動きの確認には以上のコードを使用します

引数付きの処理を呼び出したときの動き
引数付きの処理の呼び出し

画像の動きの確認をしてください

 Call 呼出テスト(Range("A1"))

 Call 呼出テスト(Range("A1:A10"))

Callステートメントで2回処理を呼び出しています
その際に、引数としてセルを指定しています

指定方法はプロシージャ名の後に「()」を指定して、中に引数に設定するものを記載します

Sub 呼出テスト(引数 As Range)

Debug.Print 引数.Address

End Sub

呼び出し先の処理では、引数は「(引数 As Range)」として指定されています

ここに呼び出し時に指定するセルを代入することができます
代入されたものは通常の変数と同じ使い方になるので、Addressプロパティでセルアドレスを取得することが出来ます

Callステートメントにより同様の処理をまとめることが出来ますが、こうして対象が違っていてまとめることが出来ない場合に使用できます

なお、この引数付きのプロシージャからデバッグモードに入ることはできません
なので動作確認を行いたい場合は、呼び出し元のプロシージャから実行することでデバッグモードを行うことが可能になります

また、ここではSubプロシージャで行っていますが、Functionプロシージャでも全く同様に使用できます