ユーザー定義関数で初期値が空っぽの場合
先日、ワークシート関数:TEXTJOINの存在を知った。複数のセルにある文字列を指定して、任意の文字で文字列を結合させることが出来る。
例えば、こんな感じだ。まず、セルにA,B,C・・・と一文字ずつ入力する。
次いで、TEXTJOIN関数を用いて、これらを「,」区切りでつないでみる。
これは、複数とびとびのセルを指定することもできる。
これをユーザー定義関数で実現する場合、恐らくこんな感じになる。
Function Sample(delimiter As String, _ ignore_blank As Boolean, _ rng1 As Range, _ rng2 As Range, _ rng3 As Range) As String
※rng4 以降は割愛。
でもこれだと、rng1 ~ rng3・・・ を必ず指定しなければならない。では、rng2 以降を次のように設定するには、どうすればよいだろう。
- rng2 以降の指定は任意(してもいいし、しなくてもいい)。
- 指定していない場合、変数の中身は空。
そこで試しに、こんなものを作ってみた。
Function Sample(Optional rng As Range = Nothing) If Not rng Is Nothing Then MsgBox rng.Address Else MsgBox "指定なし" End If End Function
テスト1:A1を指定
Sub test1() Sample Range("A1") End Sub
テスト1の結果:
テスト2:何も指定しない
Sub test2() Sample End Sub
テスト2の結果:
ということで今回、初期値が「Nothing」OKということが分かった。
これは使えそうだ。
あとは、rng1, rng2, rng3 ・・・ をループか何かで取り出せると便利なのだけど、これについては調べても答えが出てこない。
不可能なのかもしれないが、気長に調べるとしよう。
参考まで。