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

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

マクロ 85 その3回

引数の数を可変にできる ParamArray-3

85回からの続き3回目です。変数が可変の場合のコードを具体的に解説します。

ParamArrayキーワードを使った場合の具体的な解説

1.引数jointextに次の かたまりを指定したとします。かたまりは今回はgroupedという変数名です。ParamArrayキーワードを使っているので、引数を2個指定できているのです。


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

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


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

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


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

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


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

groupedの数だけ繰り返し、全部をnewArrayに追加できたら、最後に、
ketugou = Join(newArray, delimiter)
でそれぞれをdelimiterで結合します。コードは以上です。

実行結果1ParamArrayキーワード付のユーザー定義関数

5. では実際にユーザ定義関数ketugouを使ってみましょう。=keと入力すると、関数の候補に表示されますから、Tabキーで確定します。


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

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


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

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


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

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


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

実行結果です。


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

実行結果2ParamArrayキーワード付のユーザー定義関数

9. 続いて、Range以外の文字列を指定するケースです。
=ketugou  と入力できたら、そのあとで、Ctrl+a を入力します。


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

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


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

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


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

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


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

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