プロシージャを他のプロシージャから呼び出して使用する場合に、指定する引数
が呼出す毎に異なる場合、ParamArrayキーワードを用いて引数を指定します。
ParamArrayキーワードを用いた引数はVariant型配列として扱われ、データ型の宣
言は出来ません。したがって、宣言は・・・
Sub/Function (ParamArray 引数名()) As ・・・
のようになります。
以下のサンプルではFunctionプロシージャ”MySum”に任意の数の引数を与え、す
べてを合計した値を返します。”TEST”プロシージャを実行してください。
(サンプル)
Function MySum(ParamArray MyVal()) As Currency
Dim i As Long
Dim Amount As Currency
For i = LBound(MyVal) To UBound(MyVal)
Amount = Amount + MyVal(i)
Next i
MySum = Amount
End Function
Sub TEST()
’MySumプロシージャ呼び出し
MsgBox MySum(100, 200, 300, 400, 500, 600)
End Sub
また、引数がVariant型配列として扱われるため、与えるデータ型は一様である必要
はありません。したがって、以下のサンプルのように型の異なるデータを順に引数
として与えることもできます。
(TEST2プロシージャを実行してください。MyListプロシージャに異なるデータ型を
引数として与え、引数を文字列として連結して返します。)
(サンプル2)
Function MyList(ParamArray MyVal())
Dim Msg As String
Dim i As Integer
For i = LBound(MyVal) To UBound(MyVal)
Msg = Msg & MyVal(i) & vbCrLf
Next i
MyList = Msg
End Function
Sub TEST2()
Dim Amount As Currency
Dim Employee As String
Dim ID As Integer
Amount = CCur(200000)
Employee = "Exel Office"
ID = 1
’MyListプロシージャ呼び出し
MsgBox MyList(ID, Employee, Amount)
End Sub
|