以前、シート名を取得するユーザー定義型関数を作りましたが、引数が不要な方法を新たに思いつきました。
以前のユーザー定義型関数
以前のやり方は、名前を知りたいシートの任意のセルを引数Rngに渡すことによって、Rng.Parent つまりセルの親要素であるシートオブジェクトを取得し、Rng.Parent.Nameでシート名を取得していました。この場合、
1 |
=SHEETNAME("A1") |
のように、引数を指定する必要があります。
新たな方法
今回は、さらに手を抜くために、引数を渡さずにシート名を取得する方法を考えてみました。
調べてみると、ユーザー定義関数が書き込まれているセルは、Application.ThisCellで取得できるようです。これを使って引数が不要なユーザー定義関数を作ることができます。
1 2 3 4 5 |
Function SHEETNAME() As String SHEETNAME = Application.ThisCell.Parent.Name End Function |
こうすると
1 |
=SHEETNAME() |
のように、引数を省略してもシート名が取得できます。