訪問して頂きありがとうございます。まさふくろーです。
この記事では、引数の数を可変にするプロシージャを作成する方法をご紹介します。
目次
使用するキーワード
ParamArrayキーワード
説明 |
ParamArrayキーワードを指定すると、引数は配列として扱われます。 |
指定する引数の数が異なる場合に使用します。 |
最後の引数でのみ使用可能です。 |
Optional、Byval、ByRefキーワードと一緒に使うことはできません。 |
配列に関する参考記事はこちら
サンプルプログラムで使用する関数
UBound関数
UBound (arrayname [, dimension])
説明 |
配列の指定された次元で使用できる添字(要素数)の最大値を取得します。 |
指定項目 | 必須 | 説明 |
arrayname | 〇 | 配列変数の名前を指定。 |
dimension |
ー |
多次元配列の場合、どの次元の最大値を取得するかを指定。 |
3次元配列「Dim A(1 To 100, 0 To 3, -3 To 4)」の場合、dimension「1」を指定すると「100」を取得、dimension「2」を指定すると「3」を取得、dimension「3」を指定すると「4」を取得します。 | ||
省略した場合は、dimension「1」を指定したものと見なされます。 |
サンプルプログラムで使用するステートメント
For Nextステートメント
For counter = start To end [ Step step ]
処理を記述
[ Exit For ]
Next [ counter ]
説明 |
counterの値がendになるまで処理を繰り返します。 |
指定項目 | 必須 | 説明 |
counter | 〇 | 繰り返し回数を格納する変数。カウンタ変数と呼びます。 |
start | 〇 | 初期値を指定。 |
end | 〇 | 終了値を指定。 |
Step step |
ー |
stepには、1回ループする際に加算する量を指定。 |
「Step 2」とした場合、カウンタ変数は「0、2、4、6・・・」と2ずつ加算されます。 | ||
省略した場合、カウンタ変数は「1」ずつ加算されます。 | ||
stepには、マイナスの値も指定できます。 | ||
Exit For | ー | ループの途中で処理を終了したい場合に使用します。 |
Next | 〇 | 次の処理に移動します。 |
サンプルプログラム(使用例)
呼び出し先のプロシージャ
1 2 3 4 5 6 7 8 9 10 11 12 |
Private Function FncSample(ParamArray arry()) As Long Dim Addition As Long Dim i As Long For i = 0 To UBound(arry) Addition = Addition + arry(i) Next FncSample = Addition End Function |
1 | 呼び出し先のFunctionプロシージャ「FncSample」を作成。 |
引数:arry()。ParamArrayキーワード指定の配列。 |
|
戻り値の型は、長整数型。 |
|
3 | 数値加算用変数「Addition」(長整数型)を宣言。 |
4 | カウンタ変数「i」(長整数型)を宣言。 |
6 | 引数の数だけ以下の処理を繰り返す。 |
7 | 呼び出し元で指定された引数の値を加算する。 |
10 | 数値加算用変数「Addition」をFunctionプロシージャ「FncSample」に設定し、加算した値を返す。 |
呼び出し元のプロシージャ
1 2 3 4 5 6 |
Private Sub Sample() MsgBox "2つの値を加算 = " & FncSample(100, 200) & vbCrLf _ & "3つの値を加算 = " & FncSample(100, 200, 300) End Sub |
1 | 呼び出し元のSubプロシージャ「Sample」を作成。 |
3 | Functionプロシージャ「FncSample」を「2つの引数指定」で呼び出し、戻り値をメッセージボックスに表示する。 |
4 | Functionプロシージャ「FncSample」を「3つの引数指定」で呼び出し、戻り値をメッセージボックスに表示する。 |
実行結果
引数 | 説明 |
2つ指定した場合 |
引数2つの値(100, 200)が加算される。 |
3つ指定した場合 | 引数3つの値(100, 200, 300)が加算される。 |
最後まで読んでいただき、ありがとうございました!
本のまとめ関連記事はこちら