Function プロシージャ (Visual Basic)Function procedures (Visual Basic)

Function プロシージャは、Function ステートメントと End Function ステートメントで囲まれた一連の Visual Basic ステートメントです。A Function procedure is a series of Visual Basic statements enclosed by the Function and End Function statements. Function プロシージャはタスクを実行した後、呼び出し元のコードに制御を戻します。The Function procedure performs a task and then returns control to the calling code. 制御を戻すときに、呼び出し元のコードに値も返します。When it returns control, it also returns a value to the calling code.

プロシージャが呼び出されるたびに、そのステートメントが実行されます。Function ステートメントの後の実行可能な最初のステートメントから始まり、最初に出現した End FunctionExit Function、または Return ステートメントで終了します。Each time the procedure is called, its statements run, starting with the first executable statement after the Function statement and ending with the first End Function, Exit Function, or Return statement encountered.

Function プロシージャは、モジュール、クラス、または構造体で定義できます。You can define a Function procedure in a module, class, or structure. 既定では Public であるため、プロシージャが定義されているモジュール、クラス、または構造体にアクセスできるアプリケーション内のどこからでも呼び出すことができます。It is Public by default, which means you can call it from anywhere in your application that has access to the module, class, or structure in which you defined it.

Function プロシージャは、呼び出し元のコードから渡される定数、変数、式などの引数を受け取ることができます。A Function procedure can take arguments, such as constants, variables, or expressions, which are passed to it by the calling code.

宣言の構文Declaration syntax

Function プロシージャを宣言するための構文は次のとおりです。The syntax for declaring a Function procedure is as follows:

[Modifiers] Function FunctionName [(ParameterList)] As ReturnType
End Function

"修飾子" では、アクセス レベルと、オーバーロード、オーバーライド、共有、シャドウに関する情報を指定できます。The modifiers can specify access level and information regarding overloading, overriding, sharing, and shadowing. 詳細については、「Function Statement (Function ステートメント)」をご覧ください。For more information, see Function Statement.

各パラメーターは、Sub プロシージャの場合と同様に宣言します。You declare each parameter the same way you do for Sub Procedures.

データの種類Data type

すべての変数と同様に、すべての Function プロシージャにもデータ型があります。Every Function procedure has a data type, just as every variable does. このデータ型は、Function ステートメントの As 句で指定され、関数が呼び出し元のコードに返す値のデータ型が決定されます。This data type is specified by the As clause in the Function statement, and it determines the data type of the value the function returns to the calling code. 次の宣言のサンプルはこれを示しています。The following sample declarations illustrate this.

Function Yesterday() As Date
End Function

Function FindSqrt(radicand As Single) As Single
End Function

詳細については、「Function Statement (Function ステートメント)」の「Parts (要素)」をご覧ください。For more information, see "Parts" in Function Statement.

戻り値Returning values

Function プロシージャが呼び出し元のコードに返す値は戻り値と呼ばれます。The value a Function procedure sends back to the calling code is called its return value. プロシージャは、次の 2 つの方法のいずれかでこの値を返します。The procedure returns this value in one of two ways:

  • Return ステートメントを使用して戻り値を指定し、呼び出し元のプログラムに制御をすぐに戻します。It uses the Return statement to specify the return value, and returns control immediately to the calling program. 次に例を示します。The following example illustrates this.

    Function FunctionName [(ParameterList)] As ReturnType
        ' The following statement immediately transfers control back
        ' to the calling code and returns the value of Expression.
        Return Expression
    End Function
  • プロシージャの 1 つ以上のステートメントで、独自の関数名に値を割り当てます。It assigns a value to its own function name in one or more statements of the procedure. Exit Function または End Function ステートメントが実行されるまで、呼び出し元のプログラムに制御は戻りません。Control does not return to the calling program until an Exit Function or End Function statement is executed. 次に例を示します。The following example illustrates this.

    Function FunctionName [(ParameterList)] As ReturnType
        ' The following statement does not transfer control back to the calling code.
        FunctionName = Expression
        ' When control returns to the calling code, Expression is the return value.
    End Function

戻り値を関数名に割り当てる利点は、Exit Function または End Function ステートメントが出現するまで、プロシージャから制御が戻されないことです。The advantage of assigning the return value to the function name is that control does not return from the procedure until it encounters an Exit Function or End Function statement. これにより、暫定値を割り当て、必要に応じて後で調整できます。This allows you to assign a preliminary value and adjust it later if necessary.

戻り値の詳細については、「Function Statement (Function ステートメント)」をご覧ください。For more information about returning values, see Function Statement. 配列を返す方法については、配列に関する記事をご覧ください。For information about returning arrays, see Arrays.

呼び出しの構文Calling syntax

Function プロシージャを呼び出すには、その名前と引数を代入ステートメントの右辺または式に含めます。You invoke a Function procedure by including its name and arguments either on the right side of an assignment statement or in an expression. 省略可能ではないすべての引数に値を指定する必要があり、引数リストをかっこで囲む必要があります。You must provide values for all arguments that are not optional, and you must enclose the argument list in parentheses. 引数を指定しない場合は、必要に応じてかっこを省略できます。If no arguments are supplied, you can optionally omit the parentheses.

Function プロシージャの呼び出しの構文は次のとおりです。The syntax for a call to a Function procedure is as follows.

lvalue = 関数名 [( 引数リスト )]lvalue = functionname [( argumentlist )]

If (( 関数名 [( 引数リスト )] / 3) <= ) ThenIf (( functionname [( argumentlist )] / 3) <= expression ) Then

Function プロシージャを呼び出すときに、その戻り値を使用する必要はありません。When you call a Function procedure, you do not have to use its return value. 使用しない場合、関数のすべてのアクションが実行されますが、戻り値は無視されます。If you do not, all the actions of the function are performed, but the return value is ignored. 多くの場合、MsgBox はこの方法で呼び出されます。MsgBox is often called in this manner.

宣言と呼び出しの実例Illustration of declaration and call

次の Function プロシージャは、他の 2 つの辺の値を指定して、直角三角形の最も長い辺 (斜辺) を計算します。The following Function procedure calculates the longest side, or hypotenuse, of a right triangle, given the values for the other two sides.

Function Hypotenuse(side1 As Double, side2 As Double) As Double
    Return Math.Sqrt((side1 ^ 2) + (side2 ^ 2))
End Function

次の例は、hypotenuse の一般的な呼び出しを示しています。The following example shows a typical call to hypotenuse.

Dim testLength, testHypotenuse As Double
testHypotenuse = Hypotenuse(testLength, 10.7)

関連項目See also