|
Microsoft® Visual Basic® Scripting Edition VBScript のプロシージャ |
| 目次 | | 前ページ | 次ページ |
|
Microsoft Visual Basic Scripting Edition (以下 VBScript) には、Sub プロシージャと Function プロシージャの 2 種類のプロシージャがあります。
Sub プロシージャ
Sub プロシージャは、Sub ステートメントと End Sub ステートメントで囲まれた一連の VBScript ステートメントで、このプロシージャは実行しても値を返しません。Sub プロシージャは、呼び出したプロシージャを通じて、定数、変数または式などの引数を取得できます。Sub プロシージャを定義するときに引数を省略する場合は、Sub ステートメントに空のかっこを付けなければなりません。次の Sub プロシージャでは、ユーザーに情報を伝えるために 2 つの固有に組み込まれた VBScript の InputBox 関数 と MsgBox 関数が使われています。そしてその情報に基づく計算結果が表示されます。計算は使用している VBScript で作成された Function 関数で実行されます。次に Function プロシージャの解説を示します。
Sub ConvertTemp() temp = InputBox("華氏の温度を入力してください。", 1) MsgBox "温度は摂氏 " & Celsius(temp) & " ℃ です。" End Sub
Function プロシージャは、Function ステートメントと End Function ステートメントで囲まれた一続きの VBScript ステートメントです。Function プロシージャは、Sub プロシージと似ていますが、値を返すこともできます。Function プロシージャは、呼び出したプロシージャを通じて、定数、変数または式などの引数を取得できます。Function プロシージャを定義するときに引数を省略する場合は、Function ステートメントに空のかっこを付けなければなりません。Function プロシージャは、プロシージャの 1 つまたは複数のステートメントの名前に割り当てられている値を返します。Function プロシージャに返されるデータ型は、常にバリアント型です。次の例では、Celsius 関数を使って華氏の温度から摂氏の温度を計算します。関数が ConvertTemp Sub プロシージャから呼ばれると、引数の値を持った変数が Function プロシージャに渡されます。呼んだ 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 プロシージャを使う必要があります。Function プロシージャと異なり、Sub プロシージャは値を返すことができません。
Function プロシージャをコード内で使うには、必ず割り当てた変数の右側か、式の中で使わなければなりません。次に例を示します。
またはTemp = Celsius(fDegrees)他のプロシージャから Sub プロシージャを呼ぶには、カンマで区切られた引数を値として持つプロシージャ名を記述します。Call ステートメントでは、引数を省略できます。引数を指定する場合、引数をかっこで囲まなければなりません。MsgBox "温度は摂氏 " & Celsius(temp) & " ℃ です。"次の例では、MyProc プロシージャを 2 回呼び出しています。1 回目は、コード内で Call ステートメントを使い、2 回目では使っていません。両方とも、まったく同じ動作をします。
Call ステートメントを使用しない場合は、かっこを付けないことに注意してください。Call MyProc(firstarg, secondarg) MyProc firstarg, secondarg