1. ホーム
  2. スクリプト・コラム
  3. vbs

VBSの基本 - VBScriptの処理(SubとFunctionを使った関数の定義)

2022-02-08 11:49:02

一般的にプロシージャ関数は、コンテンツのループ処理やページングなどの機能を再利用する際に使用します。

Subプロシージャ

Subプロシージャは、Sub文とEnd Sub文の間に含まれるVBScript文の集合体です。Sub プロシージャに引数がない場合、Sub ステートメントには空の括弧 () を含める必要があります。

コード例は次のとおりです。

Call GetName() 'Call the Sub procedure
Sub GetName()
  MsgBox "I am the script house" 'Output string
End Sub

Subプロシージャは、パラメータ(呼び出し側のプロシージャから渡される定数、変数、式)を使用することができます。コード例は以下の通りです。

Call GetName("I am the script house") 'Call Sub
Sub GetName(name)
  MsgBox name 'Output string
End Sub

Subプロシージャに戻り値がない!

getName "Script House" 'Call procedure
Sub getName(name)
  getName = name 'Set the return value
End Sub

上記のスクリプトを実行すると、以下のようなエラーが発生します。このプロシージャは戻り値を持つことができないので、注意してください。

機能プロセス

Function プロシージャは、Function ステートメントと End Function ステートメントの間にある VBScript ステートメントのセットです。Function プロシージャは Sub プロシージャと似ていますが、Function プロシージャに引数がない場合は Function ステートメントに空の括弧 () が含まれていなければならないという点が異なります。サンプルコードは以下の通りです。

Call GetName() 'Call Function
Function GetName()
  MsgBox "Here is the script house" 'Output string
End Function

Functionプロシージャは、パラメータ(呼び出し側のプロシージャから渡される定数、変数、式)を使用することができます。コード例は以下の通りです。

Call GetName("Here is the script house") 'Call Function
Function GetName(name)
  MsgBox name 'Output string
End Function

関数には戻り値があり、プロシージャの文中では関数名で代入されます。

getName "Here is the script home" 'Call Function
Function getName(name)
  getName = name 'Set the return value
End Function

プロシージャの呼び出し方

Function プロシージャを呼び出す場合、変数代入文の右端または式の中で関数名を使用する必要があります。

Subプロシージャを呼び出す場合は、プロシージャ名とすべての引数の値をカンマで区切って入力するだけです。Call文は必須ではありませんが、使用する場合は、すべての引数を括弧で囲む必要があります。

  次の例は、プロシージャを呼び出す2つの方法を示しています。1 つは Call 文を使用し、もう 1 つは使用しません。どちらも同じ効果があります。

getName "scriptHome" 'The first way to write the call procedure
Call getName("I am mdxy") 'The second way to write the call procedure
Sub getName(name)
  MsgBox "I am"&name
End Sub

SubとFunctionの違いを覚えよう。

Subには戻り値がなく、Functionには戻り値があります。

Sub は式の中に入れることができませんが、Function は可能です。