HOME > 即効テクニック > Excel VBA > その他関連のテクニック > 引数が不定の場合−ParamArrayキーワード

即効テクニック

その他関連のテクニック

引数が不定の場合−ParamArrayキーワード

(Excel 2000)
プロシージャを他のプロシージャから呼び出して使用する場合に、指定する引数が呼出す毎に異なる場合、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