VBScript: Functionの戻り値を複数、または配列で受け取るには

VBScriptのFunctionプロシージャから複数の戻り値を受け取りたい場合や、 配列を受け取る方法を紹介します。

VBScriptのFunctionでは戻り値は1つしか受け取れませんが、 配列を受け取ることはできます。 ですから、配列を受け取ることで実質複数の戻り値を受け取ることができます。

戻り値として配列を受け取る

次のサンプルコードでは、 戻り値で配列を受け取って、その配列の内容を表示しています。

' 関数定義
Function Test(ByVal x, ByVal y)
	
	s = x + 1
	t = y + 1
	
	Test = Array(s, t)

End Function

' 関数呼び出し(配列を受け取る)
arr = Test(1,3)

For Each a In arr
	WScript.Echo a
Next

' 実行結果
2
4

引数を参照渡しで指定し、戻り値の代わりとする

引数を参照渡しで指定して、 Functionプロシージャ内で変数の値を書き換えることで、 複数戻り値の代わりとすることもできます。

VBScriptの場合、関数の引数には「参照渡し(ByRef)」と 「値渡し(ByVal)」があります。 何も指定しなければ「参照渡し(ByRef)」です。

次のサンプルコードでは、 2つの引数を「参照渡し(ByRef)」で渡し、 Function内で変数の内容を書き換えています。

「戻り値」+「2つの引数」で、実質的に3つの戻り値を受け取ることができています。

' 関数定義
Function Test2(ByRef x, ByRef y)

	x = x + 1
	y = y + 1
	
	Test2 = x + y

End Function

a = 10
b = 20

' 関数呼び出し
c = Test2(a, b)

WScript.Echo c  ' 32
WScript.Echo a  ' 11
WScript.Echo b  ' 21
VBScript入門