Visual Basic におけるプロシージャ
更新 : 2007 年 11 月
プロシージャは、宣言ステートメント (Function、Sub、Operator、Get、Set) とそれに対応する End 宣言に囲まれた Visual Basic ステートメントのブロックです。Visual Basic では、すべての実行可能なステートメントはプロシージャ内部に収める必要があります。
プロシージャの呼び出し
プロシージャは、コード内の他の場所で呼び出します。これをプロシージャ呼び出しと呼びます。実行が完了すると、そのプロシージャを呼び出したコードに制御を返します。このコードは、呼び出し元のコードと呼ばれます。呼び出し元のコードは、ステートメント、またはステートメント内の式であり、プロシージャを名前で指定して制御を渡します。
プロシージャからの復帰
プロシージャは、実行の終了時に制御を呼び出し元のコードに返します。これを行うには、Return ステートメント (Visual Basic)、プロシージャの適切な Exit ステートメント (Visual Basic) ステートメント、またはプロシージャの End (Visual Basic) ステートメントを使用します。呼び出し元のコードのプロシージャ呼び出しの直後に制御が返されます。
Return ステートメントを使うと、制御はすぐに呼び出し元のコードに返されます。Return ステートメントの後にあるステートメントは実行されません。同じプロシージャ内に、複数の Return ステートメントを定義できます。
Exit Sub ステートメントまたは Exit Function を使うと、制御はすぐに呼び出し元のコードに返されます。Exit ステートメントの後にあるステートメントは実行されません。同じプロシージャに複数の Exit ステートメントを定義できます。また、Return ステートメントと Exit ステートメントを同じプロシージャに混在させることもできます。
プロシージャに Return ステートメントまたは Exit ステートメントがない場合、プロシージャ本体にある最後のステートメントの後に End Sub または End Function、End Get、または End Set が追加されます。End ステートメントは、すぐに制御を呼び出し元のコードに返します。プロシージャ内には End ステートメントを 1 つだけ指定できます。
パラメータと引数
ほとんどの場合、プロシージャは、呼び出されるたびに異なるデータを操作する必要があります。この情報は、プロシージャ呼び出しの一部としてプロシージャに渡します。プロシージャには 0 個以上のパラメータを定義します。各パラメータは、プロシージャに渡す値を表します。プロシージャ定義における各パラメータに対応するのが、プロシージャ呼び出しにおける引数です。引数は、プロシージャ呼び出しでそれに対応するパラメータに渡す値を表します。
プロシージャの種類
Visual Basic で使用されるプロシージャには、次の種類があります。
Sub プロシージャ は、アクションを実行しますが、呼び出し元のコードに値を返すことはありません。
イベント処理プロシージャは、Sub プロシージャの一種であり、ユーザーによる操作やプログラムの動作によって発生したイベントに応答して実行されます。
Function プロシージャ は、呼び出し元のコードに値を返します。呼び出し元に戻る前に、他のアクションを実行できます。
Property プロシージャ は、オブジェクトまたはモジュールのプロパティの値を取得および設定します。
演算子プロシージャ は、オペランドの 1 つまたは両方が新しく定義されたクラスまたは構造体である場合に、標準の動作を定義します。
Visual Basic におけるジェネリック プロシージャ では、通常のパラメータに加え、1 つ以上の型パラメータが定義されるため、呼び出し元のコードでは呼び出しのたびに特定のデータ型を渡すことができます。
プロシージャと構造化コード
アプリケーションの実行可能コードのすべての行は、なんらかのプロシージャ (Main、calculate、Button1_Click など) の中に記述する必要があります。大きなプロシージャがある場合は、いくつかに分割すると、アプリケーションのコードが読みやすくなります。
プロシージャは、頻繁に使用される計算、テキストやコントロールの操作、データベースの操作など、繰り返し実行されるタスクや共有されているタスクを実行するのに便利です。プロシージャは、コード内のさまざまな場所から呼び出すことができるため、アプリケーションの基本的な構成要素として使用できます。
プロシージャでコードを構成すると、次の利点があります。
プロシージャを使うと、プログラムを個別の論理単位に分割できます。プロシージャごとにデバッグする方が、プロシージャに分割されていないプログラム全体をデバッグするよりも簡単です。
あるプログラム用に開発したプロシージャは、多くの場合、ほとんど変更せずに他のプログラムで使用できます。同じコードを何度も書かなくて済みます。
参照
処理手順
概念
Visual Basic におけるジェネリック プロシージャ