エクセルのシート名を取得する(ユーザー定義関数)VBAを紹介します。
シートを複数指定したときなど、自分が今どのシートを見ているのかが容易にわかります。

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



どうしました?



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



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



あくまで、数式を使用するほうが汎用性に優れています。
ユーザー定義関数を作成する



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で常に使用できるようにする(アドインの設定)
- 新規のExcelファイルを開き、VBAを記述する
- 名前をつけて保存する(Excelアドイン「.xlamファイル」として保存)
- アドインの設定をする



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