パラメータ配列

更新 : 2007 年 11 月

通常は、プロシージャ宣言で指定されているより多くの引数を使ってプロシージャを呼び出すことはできません。不特定多数の引数が必要な場合は、パラメータ配列を宣言すると、値の配列をプロシージャのパラメータとして渡すことができます。プロシージャを定義するときには、パラメータ配列の要素の数がわからなくてもかまいません。配列のサイズは、プロシージャの呼び出しごとに個別に決定されます。

ParamArray を宣言する

パラメータ リストでパラメータ配列を指定するには、ParamArray キーワードを使用します。次の規則が適用されます。

  • プロシージャはパラメータ配列を 1 つだけ定義でき、これはプロシージャの定義の最後のパラメータである必要があります。

  • パラメータ配列は値渡しで渡す必要があります。プロシージャ定義で ByVal キーワードを使って明示的に指定することをお勧めします。

  • パラメータ配列は自動的に省略可能になります。既定値は、パラメータ配列の要素型の空の 1 次元配列です。

  • パラメータ配列より前には、必須のパラメータだけを指定します。省略可能なパラメータはパラメータ配列だけであることが必要です。

詳細については、「方法 : 不特定数のパラメータを受け取るプロシージャを定義する」を参照してください。

ParamArray を呼び出す

パラメータ配列を定義するプロシージャを呼び出す場合、引数は次のいずれかの方法で渡します。

  • なし。ParamArray 引数は省略できます。この場合は、空の配列がプロシージャに渡されます。Nothing (Visual Basic) キーワードを渡しても同じ結果になります。

  • コンマで区切った任意の数の引数のリスト。各引数のデータ型は、暗黙的に ParamArray 要素型に変換できる必要があります。

  • パラメータ配列と同じ要素型の配列

いずれの場合も、プロシージャ内のコードでは、各要素が ParamArray データ型と同じデータ型の 1 次元配列として、パラメータ配列を扱う必要があります。

詳細については、「方法 : 不特定数のパラメータを受け取るプロシージャを呼び出す」を参照してください。

538f81ec.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

無限に増大する配列を扱う場合、アプリケーション内部の容量を超過してしまう可能性があります。パラメータ配列を受け取る場合は、呼び出し元のコードが渡した配列のサイズをテストする必要があります。このサイズがアプリケーションには大きすぎる場合、適切な手順を行う必要があります。詳細については、「方法 : 配列のサイズを決定する」を参照してください。

参照

概念

Visual Basic におけるプロシージャ

プロシージャのパラメータと引数

引数の値渡しおよび参照渡し

位置と名前による引数渡し

省略可能なパラメータ

プロシージャのオーバーロード

Visual Basic における型チェック

参照

Optional (Visual Basic)

UBound 関数 (Visual Basic)

その他の技術情報

Visual Basic における配列