サブプロシージャ
サブプロシージャとは複数あるプロシージャを1つにまとめて、プログラムの記述をわかりやすくしたものです。
VBAでプログラムを書くとき(Sub で始まりEnd Subで終わる)ものをサブプロシージャといいます。
今までにもいろんなところでサブプロシージャを見られてきたのではないでしょうか。
サブプロシージャは2つ3つなど複数組み合わせて使うこともできます。また別のサブプロシージャを呼び出して使うこともできます。
これから2つのサブプロシージャを作成し、1つのサブプロシージャで別のサブプロシージャの内容を呼び出すプログラムを作成します。
文字だけで見ると難しく見えますが、実行結果を見れば内容がすぐに分かります。
1つ1つ画像付きで説明していきます。
エクセルからVBEを起動します。
ワークシートの画面で上のメニューの[ ツール ] ⇒ [ マクロ ] ⇒ [ Visual Basic Editor ] をクリックします。
1つ目のサブプロシージャを作成します。
この状態でサブプロシージャを実行すると2回メッセージボックスを表示します。
1つ目のサブプロシージャ作成は一旦ここで止めて、2つ目のサブプロシージャを作成します。
2つめのサブプロシージャを作成しました。
複数のサブプロシージャを使うときは、1つのサブプロシージャを完成 (End Subでプロシージャを閉じた段階で完成) させた後、改行をして再び「Sub ○○○」と入力すると自動的に横線が入ります。
この線はプロシージャがどこで分かれているかの目印になります。
この段階での状況を説明します。
2つのサブプロシージャはそれぞれ別なものなので、独立したサブプロシージャが2つ並んでいる状態です。
ここでサブプロシージャの実行を行っても、2つのサブプロシージャの内容をまとめて実行させることはできません。
2つのサブプロシージャを併せて実行するにはどちらかで呼び出す必要があります。
サブプロシージャ1でサブプロシージャ2の内容を呼び出します。
呼び出したサブプロシージャ2が終了すると、サブプロシージャ1に戻りそのままプロシージャが実行されます。
サブプロシージャを実行するときは必ず呼び出し側で行いましょう。
呼び出される側でサブプロシージャを実行しても、呼び出される側の内容しか表示されません。
(今回の場合だとサブプロシージャ2のみ)
それではプロシージャ1を実行してみましょう。
サブプロシージャ1の中でサブプロシージャ2のメッセージボックスを呼び出しました。
これにより3つのメッセージボックスを表示されます。