動的配列をつかうユーザー定義関数

マクロ 85 その3回
引数の数を可変にできる ParamArray-3
85回からの続き3回目です。変数が可変の場合のコードを具体的に解説します。
(サンプルファイルは、こちらです。 引数が不定でもParamArrayで大丈夫、ParamArrayでユーザーファンクション、サンプル100回)
ParamArrayキーワードを使った場合の具体的な解説
1.引数jointextに次の かたまりを指定したとします。かたまりは今回はgroupedという変数名です。ParamArrayキーワードを使っているので、引数を2個指定できているのです。

2. 最初のgroupedがRangeだったら、それぞれのpieceを見ます。
空白を無視するについて、ignore_empty をTrueで指定しているか、もしくは、Not IsEmpty(grouped)ならば、データがあるということなので、動的変数の再宣言を行う、ReDimステートメントで宣言します。

3.ReDim Preserve newArray(i) で配列の中にnewArray(i)つまり1個のデータが入ったことになります。 中身は、「How's」です

4. groupedがRangeじゃない時には、Elseの処理になります。シート上でセルやセル範囲を指定するのではなく、直接文字列を入力したりした場合のことになります。それはそのまま使えばいいので、ReDimステートメント newArray(i)として再宣言します。

groupedの数だけ繰り返し、全部をnewArrayに追加できたら、最後に、
ketugou = Join(newArray, delimiter)
でそれぞれをdelimiterで結合します。コードは以上です。
実行結果1ParamArrayキーワード付のユーザー定義関数
5. では実際にユーザ定義関数ketugouを使ってみましょう。=keと入力すると、関数の候補に表示されますから、Tabキーで確定します。

6. そして、引数を入力していくわけですが、引数に何を指定することにしていたのか、忘れてしまう場合や、その順序を思い出せない場合もありますね。そこでこんどはCtrl+Shift+aを入力します。

7.すると、関数の引数が表示されるので、そこに必要なものを指定してやればいいのです。

8. 以上でよければ、Enterで確定します。

実行結果です。

実行結果2ParamArrayキーワード付のユーザー定義関数
9. 続いて、Range以外の文字列を指定するケースです。
=ketugou と入力できたら、そのあとで、Ctrl+a を入力します。

10. Ctrl+a を入力することで、関数の引数ダイアログが表示されます。自分で作成したユーザー定義関数で関数の引数ダイアログが使えます。

11. 引数部分を入力します。今回delimiter を”-”にしました。Elsで処理される文字列を直接入力しています。

13. 実行結果です。delimiter を”-”にしたので少しへんですが、きちんと結合されています。

動画もご覧になってぜひ理解を深めてください。