Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » ワークシート名をセルに表示するユーザー定義関数


ワークシート名をセルに表示するユーザー定義関数

対象:Excel97, Excel2000, Excel2002, Excel2003

ワークシート関数を使ってブック名を表示させる方法では、上手くワークブック名が取得できない場合があるとこととその対策をご紹介しました。

同様の問題は、ワークシート関数を使ってシート名をセルに表示させる場合にもやっぱり発生します。

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」
とする方がいいんじゃないかと考えています。

関連語句
自作関数, シート名をリンクする方法
[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » ワークシート名をセルに表示するユーザー定義関数

TrackBack:1

TrackBack URL
セルの値をシート名にするマクロ from インストラクターのネタ帳
対象:Excel97,Excel2000,Excel2002,Excel2003,Excel2007 アクティブセルの値を[名前をつけて保存]ダイアロ...

Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » ワークシート名をセルに表示するユーザー定義関数

「ユーザー定義関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.