【VBA】セルにシート名を表示する(ユーザー定義関数)

エクセルのシート名を取得する(ユーザー定義関数)VBAを紹介します。

シートを複数指定したときなど、自分が今どのシートを見ているのかが容易にわかります。

この前、シート名を取得する数式を教えていただきましたが、ちょっとなんかねぇ・・・。

どうしました?

せっかく教えていただいたのですが、覚えるのも、タイプするのも面倒だし、毎回コピーして使わないといけないし・・・でなにかいい方法がないかなと思ってるんです。

それでは「ユーザー定義関数」として登録するのはどうですか。

ただし、次の注意点に気をつけてください。

・ユーザー定義関数を関数として使用できるのはそのファイルのみです。
・ユーザー定義関数をアドイン登録して使用した場合、そのパソコンのみでそのユーザー定義関数は使い回せます。
・同じアドインを登録していない他のパソコンからファイルを閲覧した場合、エラー表示になります
・ユーザー定義関数を登録したファイルは「マクロ有効ファイル(.xlsm)」で保存しなければいけません。

シート名を取得する数式
=RIGHT(CELL(“filename”,A1),LEN(CELL(“filename”,A1))-FIND(“]”,CELL(“filename”,A1)))

あくまで、数式を使用するほうが汎用性に優れています。

目次

ユーザー定義関数を作成する

VBAを標準モジュールに書き込んでいきます。

「開発」タブ → Visual Basic (もしくは Alt + F11)

「挿入」タブ → 標準モジュール

出てきたウィンドウにVBAを記述する

シートの名前を取得するVBA

今開いているシート(アクティブシート)の名前を取得する

VBA

Function シート名1() As String

シート名1 = ActiveSheet.Name

End Function

数式

=シート名1()

結果

このユーザー定義関数には次の注意点があります。

複数のシートを指定して数式を入力した場合

「Sheet1」と「Sheet2」を選択し、数式を入力する
結果

「Sheet2」がアクティブシートになっていたので、両方とも「Sheet2」のシート名を取得しましたね。

このようにセルを複数選択して数式を入力した場合でも対応できるようにしたものが次のVBAです。

もちろん一つのシートのみを選択した場合にも使えます。

「数式で指定したセルが所属する」シートの名前を取得する

VBA

Function シート名2(セル As Range) As String

シート名2 = セル.Parent.Name

End Function

数式

=シート名2(A1)

※「A1」でなくても、どのセルを指定しても可能

Excelで常に使用できるようにする(アドインの設定)

  1. 新規のExcelファイルを開き、VBAを記述する
  2. 名前をつけて保存する(Excelアドイン「.xlamファイル」として保存)
  3. アドインの設定をする

こちらの記事に詳しく載せていますので参考にしてください。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

この記事を書いた人

子育てに奮闘しながらも、再びガッツリ走り込める日を夢見るフルタイム会社員。

コメント

コメントする

CAPTCHA


目次
閉じる