#131 | 複数の返り値を持つプロシージャ | VBA | |
一般に、プロシージャから何らかの返り値が必要な場合には「Functionプロシージャ」を使います。 例:Function GetAge(dtmBirth As Date) As Integer
※この例では Integer型 の値が返されます しかし、Functionプロシージャとしての返り値は1つしかし持つことができません。そこで、プロシージャとしての返り値だけでなく、引数を返り値として扱うことによって"複数の返り値を持つプロシージャ"を作ってみます。 引数には2つのタイプがあります。『参照渡し』と『値渡し』です。
VBAでは、特に指定しない限り、引数は『参照渡し』としてプロシージャに渡されます。したがって、プロシージャでの計算結果などをこの引数に代入することによって、呼び出し元ではそれを返り値として扱うことができます。 次の"ByrefTest"プロシージャでは、1番目と2番目の引数の値を合計し、その計算結果を3番目の引数にセットして返します。また、通常のFunctionプロシージャの返り値としても、その値が100以上かどうかをBoolean型(TrueかFalseか)で返します。 サンプルプロシージャ: Function ByrefTest(intA As Integer, intB As Integer, _
intSum As Integer) As Boolean '引数intAとintBの合計をintSumに代入して返します intSum = intA + intB 'プロシージャの返り値として、 '合計が100以上だったらTrue、未満ならFalseを返します ByrefTest = (intSum >= 100) End Function 呼び出し側の使用例: Dim intRet As Integer
If ByrefTest(50, 70, intRet) Then MsgBox CStr(intRet) & " は100以上です!" Else MsgBox CStr(intRet) & " は100以以下です!" End If If ByrefTest(10, 80, intRet) Then MsgBox CStr(intRet) & " は100以上です!" Else MsgBox CStr(intRet) & " は100以以下です!" End If |
|||
|
Copyright © T'sWare All rights reserved |