【VBA】関数の引数を可変長にする方法【ユーザー定義関数】

「ユーザー定義関数に渡す引数の数は可変長にしたい」

VBAでツール作成をしていると、複数の同じ用途の値を同時に処理したくなる時があります。

そして、ワークシートのデータなどを扱う処理の場合、引数に渡したい値の数は決まっていない時があります。

 

そんな場合のユーザー定義関数を作る際には、引数指定の際に『ParamArrayキーワード』を使います。

本記事ではそんなParamArrayキーワードについて解説していきます。

スポンサーリンク



関数の引数を可変にする方法

関数の引数を可変(引数の数が決まっていない)の関数を作る場合は、引数に『ParamArrayキーワード』を使います。

このParamArrayキーワードを使った引数は”配列”として扱います

 

下は2つの商品の合計価格と、3つの商品の合計価格を求めるコードになります。

上ではTax関数に渡す引数を2つ場合と3つ場合で呼び出しています。

11行目に引数2つの「Tax(price1, price2)」、12行目に引数3つの「Tax(price1, price2, price3)」を記述しています。※引数はいくつでもOK。

 

そして、Tax関数の中身は次のようになっています。

引数の数が不定な関数を作るための重要ポイントは1行目の「Tax(ParamArray prise())」です。

上では引数priseをParamArrayキーワードで指定しています。

そして、ParamArrayキーワードで指定すると配列として扱えるので、8~10行目で要素数分ループして値を取得して計算しています。

 

上のコードを実行すると下のような結果が得られます。

 

【注意】ParamArrayキーワードを使う際の注意点

ParamArrayキーワードを使う際には下の2つに注意してください。

・「Optionalキーワード」と一緒に引数指定ができない。

・指定する際は必ず最後の引数にする。

 

Functionプロシージャには複数のキーワードがあります。

そのキーワードの中に、省略可能な引数にするための『Optionalキーワード』があります。

そのOptionalキーワードとParamArrayキーワードを同じプロシージャーの引数で指定することはできません

下のように指定することができないということ。

×:Tax(Optional i As Long ,ParamArray prise())

 

また、ParamArrayキーワードで指定する場合は、必ず最後の引数でなければなりません

〇:Function Tax(taxRate As Double, ParamArray prise()) As Long

×:Function Tax(ParamArray prise(), taxRate As Double) As Long

 

【VBA】ユーザー定義関数を作る方法【Functionプロシージャ】
Excelにはたくさんの関数が用意されています。 それでも、自分が思った関数が用意されていない時があり、そんなときには『Functionプロシージャ』を使って新たに独自の関数(ユーザー定義関数)を作ることができます。 V...
【VBA】関数の引数を省略可能にする【ユーザー定義関数】
本記事ではユーザー定義関数で指定する引数を省略可能にする方法について解説していきます。 省略可能な引数を指定する方法 省略可能な引数を指定したい時には『Optionalキーワード』を使います。 この引数指定時にOptionalキー...
【VBA】ユーザー定義関数の戻り値を複数にする方法【ByRefを使う】
「ユーザー定義関数の戻り値を2つ以上にしたいな」 VBAでツール作成をしていると、複数の値に対して「同じ処理を行う」「複数の戻り値が欲しい」という時があります。 しかし、関数の戻り値は1つしかありませんし、増やすこともで...

 

〇おすすめのVBA参考書ランキング!

1位

2位

3位

Excel VBA 脱初心者のための集中講座パーフェクトExcel VBAExcelVBA 実戦のための技術
初心者~中級者中級者初心者~中級者
【初心者が手に取るべき参考書】

・「書籍+動画」で圧倒的に理解しやすい入門書になっている。

・丁寧で詳しい解説でボリューム感がある。

【より深い理解をしたい方にお勧めな参考書】

・テーマに対して丁寧な解説・適度な深さで解説されている。

・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。

【入門書と一緒に買うべき参考書】

・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。

・実践的で効果的なコードの書き方が理解できる。

【読んでみた一言】
正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。
【読んでみた一言】
深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。
【読んでみた一言】
基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。

¥2,794円
amazonで確認!

¥3,608円
amazonで確認!

¥2,640円
amazonで確認!

スポンサーリンク