1|2|3複数の引数を取るSubプロシージャ引数は1つではなく複数取ることもできる。Index、肥満度の判定に用いる指数)を求めるスクリプトをSubプロシージャ化したものが次のコードである。与えられた身長と体重からBMIを求め、表示する。"あなたは、肥満です。"あなたは、やせです。"あなたは、標準です。Subこのスクリプトを実行すると、次のような3つのメッセージ・ボックスが連続して表示される。SubプロシージャShowBMIを実行した例BMIの値を計算する部分をSubプロシージャ化し、それを3回呼び出している。ここではdblHeightに身長、dblWeightに体重の値を与えて、SubプロシージャShowBMIを3回呼び出している。ここで注意が必要なのは、実引数の数と仮引数の数は一致している必要がある点である。SubプロシージャShowBMIの前半部分では、与えられた引数が正しい値かどうかを判断している。0(コード中にdblHeightで割るところがあるので、0で割るとエラーになる)だと、警告メッセージを表示した後Exitステートメントを用いSubプロシージャを抜ける。このExitステートメントはFor〜Nextステートメントの解説で登場したものと同様であり、Exitした後のコードは実行されず、呼び出し元の次の行に制御を移す。この場合、BMIを計算する部分は実行されないことになる。残りの部分は実際にBMIを計算し、Ifステートメントで肥満・やせ・標準を判定しているのだが特に説明は必要ないだろう。カレンダーを出力するSubプロシージャここでSubプロシージャのおさらいをするための例題を1つ取り上げる。指定した日の含まれる月のカレンダーを出力するスクリプトを考えてみよう。ここでは、カレンダーを表示する部分をSubプロシージャ化し(ShowCalendarという名前を付ける)、引数に日付を受け取るようにしたい。マーカーで隠れたところを選択してチェックしてみよう。'今月のカレンダーを表示する。'2007年12月のカレンダーを表示する。与えられた日付が含まれる月のカレンダーを作成し表示する。Subこのスクリプトを実行すると、例えば次のようなメッセージ・ボックスが表示される。指定した日が含まれる月のカレンダーを出力する部分をSubプロシージャ化している。長いスクリプトだが、Subプロシージャの宣言と使い方についてこれで理解していただけると思う。このような長いSubプロシージャを、スクリプト・レベルから何回も呼び出すことができるので効率的であることもお分かりいただけると思う。余裕があれば、このスクリプトが実際にどういう動きをしているのか、追ってみてもらいたい。これまでの知識を総動員すれば可能であるはずだ。次回はSubプロシージャと対をなす、Functionプロシージャについて説明する。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。