Function プロシージャ (Visual Basic)

Function プロシージャは、Function ステートメントと End Function ステートメントで囲まれた一連の Visual Basic ステートメントです。 Function プロシージャはタスクを実行した後、呼び出し元のコードに制御を戻します。 制御を戻すときに、呼び出し元のコードに値も返します。

プロシージャが呼び出されるたびに、そのステートメントが実行されます。Function ステートメントの後の実行可能な最初のステートメントから始まり、最初に出現した End FunctionExit Function、または Return ステートメントで終了します。

Function プロシージャは、モジュール、クラス、または構造体で定義できます。 既定では Public であるため、プロシージャが定義されているモジュール、クラス、または構造体にアクセスできるアプリケーション内のどこからでも呼び出すことができます。

Function プロシージャは、呼び出し元のコードから渡される定数、変数、式などの引数を受け取ることができます。

宣言の構文

Function プロシージャを宣言するための構文は次のとおりです。

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

"修飾子" では、アクセス レベルと、オーバーロード、オーバーライド、共有、シャドウに関する情報を指定できます。 詳細については、「Function Statement (Function ステートメント)」をご覧ください。

各パラメーターは、Sub プロシージャの場合と同様に宣言します。

データの種類

すべての変数と同様に、すべての Function プロシージャにもデータ型があります。 このデータ型は、Function ステートメントの As 句で指定され、関数が呼び出し元のコードに返す値のデータ型が決定されます。 次の宣言のサンプルはこれを示しています。

Function Yesterday() As Date
End Function

Function FindSqrt(radicand As Single) As Single
End Function

詳細については、「Function Statement (Function ステートメント)」の「Parts (要素)」をご覧ください。

戻り値

Function プロシージャが呼び出し元のコードに返す値は戻り値と呼ばれます。 プロシージャは、次の 2 つの方法のいずれかでこの値を返します。

  • Return ステートメントを使用して戻り値を指定し、呼び出し元のプログラムに制御をすぐに戻します。 次に例を示します。

    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 つ以上のステートメントで、独自の関数名に値を割り当てます。 Exit Function または End Function ステートメントが実行されるまで、呼び出し元のプログラムに制御は戻りません。 次に例を示します。

    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 ステートメントが出現するまで、プロシージャから制御が戻されないことです。 これにより、暫定値を割り当て、必要に応じて後で調整できます。

戻り値の詳細については、「Function Statement (Function ステートメント)」をご覧ください。 配列を返す方法については、配列に関する記事をご覧ください。

呼び出しの構文

Function プロシージャを呼び出すには、その名前と引数を代入ステートメントの右辺または式に含めます。 省略可能ではないすべての引数に値を指定する必要があり、引数リストをかっこで囲む必要があります。 引数を指定しない場合は、必要に応じてかっこを省略できます。

Function プロシージャの呼び出しの構文は次のとおりです。

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

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

Function プロシージャを呼び出すときに、その戻り値を使用する必要はありません。 使用しない場合、関数のすべてのアクションが実行されますが、戻り値は無視されます。 多くの場合、MsgBox はこの方法で呼び出されます。

宣言と呼び出しの実例

次の Function プロシージャは、他の 2 つの辺の値を指定して、直角三角形の最も長い辺 (斜辺) を計算します。

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

次の例は、hypotenuse の一般的な呼び出しを示しています。

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

関連項目