ワークシート関数を使ってブック名を表示させる方法では、上手くワークブック名が取得できない場合があるとこととその対策をご紹介しました。
同様の問題は、ワークシート関数を使ってシート名をセルに表示させる場合にもやっぱり発生します。
CELL関数・FIND関数・LEN関数・RIGHT関数を組み合わせてワークシート名を取得する方法をご紹介しましたが、やっていることはCELL関数を使って「絶対パス名+[ファイル名]+シート名」を取得して、その中から「]」の位置をみつけてワークシート名を切り出していたわけです。
ファイル名やフォルダ名に「]」が含まれていれば、ブック名の取得同様、シート名も正しく取得することはできません。
パスに「]」が存在していてもワークシート名を正しく取得するには、VBA(Visual Basic for Applications)でユーザー定義関数を作成しましょう。
Function ThisSheetName() As String
Application.Volatile
ThisSheetName = Application.Caller.Parent.Name
End Function上記のコードをVBE(Visual Basic Editor)を起動して標準モジュールに貼り付け後、ワークシート上のセルに
「=ThisSheetName()」
と入力すれば、そのワークシートのシート名が表示されます。
ワークシート名を取得するユーザー定義関数を紹介しているWebページもいくつかみつかりますが、
「ActiveSheet.Name」
といったコードにしていることが多いようです。
ActiveSheetのNameプロパティを使った場合、アクティブなシートの名前が表示されるわけですから、別のシート名が表示されるということも起きてしまいます。
ですから私は、上記のように
「Application.Caller.Parent.Name」
とする方がいいんじゃないかと考えています。
- Newer:文字のサイズが使用不可に
- Older:前のスライドに戻る
Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » ワークシート名をセルに表示するユーザー定義関数