VBScript のプロシージャ

Microsoft® Visual Basic® Scripting Edition (以下 VBScript) には、Sub プロシージャFunction プロシージャの 2 種類のプロシージャがあります。

Sub プロシージャ

Sub プロシージャは、Sub ステートメントと End Sub ステートメントで囲まれた一続きの VBScript ステートメントです。Sub プロシージャは実行しても値を返しません。Sub プロシージャは、呼び出したプロシージャを通じて、定数、変数、または式などの引数を取得できます。Sub プロシージャを定義するときに引数を省略する場合は、Sub ステートメントに空のかっこを付ける必要があります。

次のコード例では、ユーザーと情報を交換すための VBScript の 2 つの関数 (InputBox 関数MsgBox 関数) が、Sub プロシージャに組み込まれています。この Sub プロシージャでは、取得した情報に基づく計算結果が表示されます。計算は、VBScript で作成された Function プロシージャで実行されます。次に Function プロシージャについて説明します。

Sub ConvertTemp()
   temp = InputBox("華氏の温度を入力してください。", 1)
MsgBox "温度は摂氏 " & Celsius(temp) & " ℃です。"
End Sub

Function プロシージャ

Function プロシージャは、Function ステートメントと End Function ステートメントで囲まれた一続きの VBScript ステートメントです。Function プロシージャは、Sub プロシージャと似ていますが、値を返すこともできます。Function プロシージャは、呼び出したプロシージャを通じて、定数、変数、または式などの引数を取得できます。Function プロシージャを定義するときに引数を省略する場合は、Function ステートメントに空のかっこを付ける必要があります。Function プロシージャは、プロシージャの 1 つ以上のステートメントの名前に割り当てられている値を返します。Function プロシージャに返されるデータ型は、常にバリアント型 (Variant) です。

次のコード例では、関数 (Celsius) を使用して華氏の温度から摂氏の温度を計算します。関数が Sub プロシージャ (ConvertTemp) から呼ばれると、引数の値を持った変数 (temp) が Function プロシージャに渡されます。Function プロシージャでは、受け取った引数の計算結果が Sub プロシージャに返されます。Sub プロシージャに返された計算結果がメッセージボックスで表示されます。

Sub ConvertTemp()
   temp = InputBox("華氏の温度を入力してください。", 1)
MsgBox "温度は摂氏 " & Celsius(temp) & " ℃です。"
End Sub

Function Celsius(fDegrees)
   Celsius = (fDegrees - 32) * 5 / 9
End Function

プロシージャの内外からデータを取得する

各データは、引数を使用してプロシージャに引き渡されます。引数は、プロシージャに引き渡すデータのプレースホルダとして取得されます。Sub ステートメントまたは Function ステートメントで使用するプロシージャを作成する場合は、プロシージャ名の後にかっこを付ける必要があります。引数はカンマ (,) で区切って、かっこの中に配置します。たとえば、次のコード例では、引数 fDegrees は、変換を行う関数 (Celsius) に渡された値が入るプレースホルダです。

Function Celsius(fDegrees)
   Celsius = (fDegrees - 32) * 5 / 9
End Function

プロシージャの外部からデータを取得するには、Function プロシージャを使用する必要があります。Sub プロシージャは、Function プロシージャと異なり、値を返すことができません。

コード内での Sub プロシージャと Function プロシージャの使い方

次のコード例のように、コード内で使用する Function プロシージャは、割り当てた変数の右側か、式の中で使用する必要があります。次にコード例を示します。

Temp = Celsius(fDegrees)

または

MsgBox "温度は摂氏 " & Celsius(temp) & " ℃です。"

他のプロシージャから Sub プロシージャを呼ぶには、カンマ (,) で区切られた引数を値として持つプロシージャ名を記述します。Call ステートメントでは、引数を省略できます。引数を指定する場合、引数をかっこで囲む必要があります。

次のコード例では、MyProc プロシージャを 2 回呼び出しています。1 回目は、コード内で Call ステートメントを使い、2 回目では使っていません。両方とも、まったく同じ動作をします。

Call MyProc(firstarg, secondarg)
MyProc firstarg, secondarg

Call ステートメントを使用しない場合には、かっこを付けていないことに注意してください。