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

Excel2000



戻る


Excel Word Access VBA! モーグ