プロシージャ(procedure)とは、複数の処理をまとめたプログラムの単位のことです。
C言語のように、プログラミング言語によっては、関数ということもあります。
VBAのプロシージャには、いくつか種類があります。よく使われるのは、以下の3種類です。
(1)Functionプロシージャ
これまで例として取り上げてきたのは、このタイプのプロシージャです。
Functionプロシージャは、関数プロシージャとも呼ばれるように、何らかの処理(計算など)を行なった後に、戻り値を返すことができます。
また Excelのワークシート上で、セルの数式に使えることもメリットです。
(2)Subプロシージャ
Subプロシージャは、何らかの処理を行なうプロシージャです。サブルーチンと呼ばれることもあります。
Subプロシージャは、他のプロシージャから呼び出して使います。
またSubプロシージャは、処理を分割する時に便利です。
プログラムが長くなると、メンテナンスが大変だし、複数のプロシージャで同じプログラムが重複することがあります。
そんな時は、役割ごとにプログラムをSubプロシージャ化することで、メンテナンスが容易になり、プログラムの重複が防げます。(再利用性が高まる)
しかしSubプロシージャは、Functionプロシージャと違い、戻り値を返すことは出来ません。
(3)イベントプロシージャ
イベントプロシージャは、イベント(出来事)が起こったことをキッカケに、システム(コンピューター)が、自動的に呼び出すプロシージャです。これが最大の特徴です。
FunctionプロシージャやSubプロシージャは、プログラマーやユーザーが、呼び出すキッカケを作らないと実行できないのに対し、イベントプロシージャは自動的に呼び出されます。
例えば、ユーザーがボタンをクリックしたこと(出来事)をキッカケに、イベントプロシージャに書かれたプログラムが実行されます。
プログラム実行の対象となるイベントは、沢山あります。
またイベントプロシージャは、他のプロシージャから呼び出して使うことも可能です。
【補講】
これらのプロシージャで共通していることは、以下の2つです。
(1)引数を受け取ることができる。
プロシージャを呼び出す時に渡す「実引数」のデータ型と、プロシージャ側で受け取る「仮引数」のデータ型を一致させる必要があります。
ただしイベントプロシージャだけは、システムが自動的に引数を渡します。
(2)他のプロシージャ内で呼び出せる
上記の3つのプロシージャは、他のプロシージャから呼び出して使えます。
意外と忘れられがちですが、イベントプロシージャの場合も「Call ステートメント」を使うことで、呼び出すことが可能です。
プロシージャの種類と特徴については、実際にプログラミングを行ない、使っていくうちにわかるようになります。
今の段階では難しく感じるかも知れませんが、安心してください。