Visual Basic におけるプロシージャProcedures in Visual Basic

プロシージャは、宣言ステートメント (FunctionSubOperatorGetSet)、および一致する End 宣言で囲まれた Visual Basic ステートメントのブロックです。A procedure is a block of Visual Basic statements enclosed by a declaration statement (Function, Sub, Operator, Get, Set) and a matching End declaration. Visual Basic 内のすべての実行可能なステートメントは、何らかのプロシージャ内になければなりません。All executable statements in Visual Basic must be within some procedure.

プロシージャの呼び出しCalling a Procedure

コード内の他の場所からプロシージャを呼び出します。You invoke a procedure from some other place in the code. これは、プロシージャ コールと呼ばれています。This is known as a procedure call. プロシージャの実行が終了すると、それを呼び出したコード (呼び出しコードと呼ばれます) に制御が戻ります。When the procedure is finished running, it returns control to the code that invoked it, which is known as the calling code. 呼び出しコードは、名前でプロシージャを指定して、これに制御を転送するステートメント、またはステートメント内の式です。The calling code is a statement, or an expression within a statement, that specifies the procedure by name and transfers control to it.

プロシージャからの復帰Returning from a Procedure

プロシージャは、実行が終了すると、呼び出しコードに制御を戻します。A procedure returns control to the calling code when it has finished running. これを行うには、Return ステートメント、プロシージャに適した Exit ステートメント、またはプロシージャの End <キーワード> ステートメントを使用することができます。To do this, it can use a Return Statement, the appropriate Exit Statement statement for the procedure, or the procedure's End <keyword> Statement statement. これで、プロシージャ コールの次の時点で、制御が呼び出しコードに渡されます。Control then passes to the calling code following the point of the procedure call.

  • Return ステートメントでは、ただちに呼び出しコードに制御が戻ります。With a Return statement, control returns immediately to the calling code. Return ステートメントより後のステートメントは実行されません。Statements following the Return statement do not run. 同じプロシージャ内に複数の Return ステートメントを含めることができます。You can have more than one Return statement in the same procedure.

  • Exit Sub または Exit Function ステートメントでは、ただちに呼び出しコードに制御が戻ります。With an Exit Sub or Exit Function statement, control returns immediately to the calling code. Exit ステートメントより後のステートメントは実行されません。Statements following the Exit statement do not run. 同じプロシージャ内に複数の Exit ステートメントを含めることができ、さらに同じプロシージャ内に Return ステートメントと Exit ステートメントを混在させることができます。You can have more than one Exit statement in the same procedure, and you can mix Return and Exit statements in the same procedure.

  • プロシージャに Return または Exit のステートメントが含まれていない場合、プロシージャ本体の最後のステートメントの後の End Sub または End FunctionEnd Get または End Set で終了します。If a procedure has no Return or Exit statements, it concludes with an End Sub or End Function, End Get, or End Set statement following the last statement of the procedure body. End ステートメントはただちに呼び出しコードに制御を戻します。The End statement returns control immediately to the calling code. End ステートメントは、プロシージャ内に 1 つだけ含めることができます。You can have only one End statement in a procedure.

パラメーターと引数Parameters and Arguments

プロシージャは、ほとんどの場合、呼び出すたびにデータごとに動作する必要があります。In most cases, a procedure needs to operate on different data each time you call it. この情報は、プロシージャ コールの一部としてプロシージャに渡すことができます。You can pass this information to the procedure as part of the procedure call. プロシージャは、パラメーターを 0 個、またはそれ以上でも定義することができ、それぞれが渡す必要がある値を表しています。The procedure defines zero or more parameters, each of which represents a value it expects you to pass to it. プロシージャ定義の各パラメーターに相当するのが、プロシージャ コールの引数です。Corresponding to each parameter in the procedure definition is an argument in the procedure call. 引数は、指定したプロシージャ コールの対応するパラメーターに渡される値を表しています。An argument represents the value you pass to the corresponding parameter in a given procedure call.

プロシージャの種類Types of Procedures

Visual Basic は、次のようないくつかの種類のプロシージャを使用します。Visual Basic uses several types of procedures:

  • Sub プロシージャはアクションを実行しますが、呼び出しコードに値を返しません。Sub Procedures perform actions but do not return a value to the calling code.

  • イベント処理プロシージャは、ユーザーの操作またはプログラムの起動によって発生したイベントに応答して実行される Sub プロシージャです。Event-handling procedures are Sub procedures that execute in response to an event raised by user action or by an occurrence in a program.

  • Function プロシージャは、呼び出しコードに値を返します。Function Procedures return a value to the calling code. 返す前に他の操作を実行することができます。They can perform other actions before returning.

    C# で書かれた一部の関数は、参照戻り値を返します。Some functions written in C# return a reference return value. 関数の呼び出し元は、戻り値を変更することができ、この変更は呼び出されたオブジェクトの状態に反映されます。Function callers can modify the return value, and this modification is reflected in the state of the called object. Visual Basic は参照によって値を返すことはできませんが、Visual Basic 2017 から、Visual Basic のコードで参照戻り値を使用できるようになりました。Starting with Visual Basic 2017, Visual Basic code can consume reference return values, although it cannot return a value by reference. 詳細については、参照戻り値に関するページを参照してください。For more information, see Reference return values.

  • Property プロシージャは、オブジェクトまたはモジュールのプロパティの値を返し、割り当てます。Property Procedures return and assign values of properties on objects or modules.

  • 演算子プロシージャは、オペランドの一方または両方が新しく定義されたクラスまたは構造体である場合に、標準の演算子の動作を定義します。Operator Procedures define the behavior of a standard operator when one or both of the operands is a newly-defined class or structure.

  • Visual Basic におけるジェネリック プロシージャは、標準のパラメーターだけでなく 1 つまたは複数の型パラメーターも定義するため、呼び出しコードが呼び出しのたびに特定のデータ型を渡すことができます。Generic Procedures in Visual Basic define one or more type parameters in addition to their normal parameters, so the calling code can pass specific data types each time it makes a call.

プロシージャと構造化されたコードProcedures and Structured Code

アプリケーションの実行可能コードのすべての行が、MaincalculateButton1_Click などの何らかのプロシージャの内部にある必要があります。Every line of executable code in your application must be inside some procedure, such as Main, calculate, or Button1_Click. 大きなプロシージャを小さなプロシージャに分割すると、アプリケーションが読みやすくなります。If you subdivide large procedures into smaller ones, your application is more readable.

プロシージャは、頻繁に使用する計算、テキストやコントロールの操作、データベースの操作など、繰り返される、または共有されるタスクを実行する場合に便利です。Procedures are useful for performing repeated or shared tasks, such as frequently used calculations, text and control manipulation, and database operations. プロシージャはコード内のさまざまな場所から呼び出すことができるため、プロシージャをアプリケーションの文書パーツとして使用することができます。You can call a procedure from many different places in your code, so you can use procedures as building blocks for your application.

プロシージャでコードを構成すると、次のような利点があります。Structuring your code with procedures gives you the following benefits:

  • プロシージャを使用して、プログラムを個々の論理単位に分割できます。Procedures allow you to break your programs into discrete logical units. プロシージャを使用せずにプログラム全体をデバッグするよりも、個別の単位の方が簡単にデバッグできます。You can debug separate units more easily than you can debug an entire program without procedures.

  • 1 つのプログラムで使用するために開発したプロシージャを、他のプログラムでも使用できます。多くの場合、プログラムをほとんどまたはまったく変更せずに使用できます。After you develop procedures for use in one program, you can use them in other programs, often with little or no modification. これにより、コードの重複を避けることができます。This helps you avoid code duplication.

参照See also