Functionプロシージャの本体を形成する名前、引数およびコードを宣言します。
構文
Function name [(arglist)] [statements] [name=expression] [Exit Function] [statements] [name=expression] End Function
引数:
Name: Functionの名前。標準の変数命名規則に従います。
Arglist: Functionプロシージャがコールされたときに渡される引数を表す変数のリスト。複数の変数はカンマで区切ります。
arglist引数には、次の構文と要素があります:
[ByVal | ByRef] varname[( )]
Arglistの引数:
ByVal: 引数が値で渡されることを示します。
ByRef: 引数が参照で渡されることを示します。
Varname: 引数を表す変数の名前。標準の変数命名規則に従います。
Statements: Functionプロシージャの本体内で実行される文のグループ。
Expression: Functionの戻り値。
備考
PublicまたはPrivateを使用して明示的に指定されていない場合、Functionプロシージャはデフォルトでpublicになります。つまり、スクリプト内の他のすべてのプロシージャから参照できます。Functionのローカル変数の値は、プロシージャのコール間では保持されません。
他のプロシージャ(たとえば、SubやProperty Get)内ではFunctionプロシージャを定義できません。
Exit Function文は、Functionプロシージャを即時に終了します。プログラムの実行は、Functionプロシージャをコールした文に続く文から続行されます。Functionプロシージャの任意の場所に任意の数のExit Function文を配置できます。
Functionプロシージャは、Subプロシージャと同様に、引数を取り、一連の文を実行し、その引数の値を変更できる個別のプロシージャです。ただし、Subプロシージャとは異なり、Function Sqr、Function Mid、Function Chrなどの組込み関数を使用する場合と同様に、式の右側でFunctionプロシージャを使用できます。
Functionプロシージャをコールするには、式の中で関数名とそれに続くカッコで囲んだ引数リストを使用します。Functionプロシージャのコール方法の詳細は、「Call文」を参照してください。
関数から値を戻すには、その値を関数名に割り当てます。プロシージャ内の任意の場所に、任意の数のこのような割当てを配置できます。nameに値が割り当てられていない場合、プロシージャは何も戻しません。
次の例では、FindValueという名前の関数に戻り値を割り当てる方法を示します。ここでは、値が見つからなかったことを示すために、名前にFalseが割り当てられています。
例1:
Function FindValue(val)
Dim notFound
notFound = True
'Business Logic
'val not found. Return a val of False.
If notFound Then
FindValue = False
Exit Function
End If
' Business Logic
End Function
'Usage:-
val = FindValue(8)
Functionプロシージャで使用される変数は、プロシージャ内で明示的に宣言されている変数と宣言されていない変数の2つのカテゴリに分類されます。プロシージャで明示的に宣言された変数は、常にプロシージャに対してローカルです。プロシージャ内で使用されていても明示的に宣言されていない変数は、プロシージャ外の最上位レベルで明示的に宣言されていないかぎり、これらの変数もローカルです。