№0004. Excel VBA-[ワークシート名を取得するユーザー定義関数を作成する。]
Excelマクロでは、ワークシート名を取得するユーザー定義関数を作成することができます。
Excelブック中に、同型式のワークシートが複数存在していて、ワークシートごとに類似のデータを操作している場合、ワークシートの任意のセルにワークシート名が表示されていると便利です。
Volatileメソッド/Callerプロパティ
Volatileメソッドは、ユーザー定義関数を自動再計算(揮発性)関数にします。
Callerプロパティは、そのVisual Basic for Applicationsを呼び出した方法について色々な情報を返します。
今回は、Sample_GetWorkSheetName()関数に、次の処理を実装した例を掲載します。
※Sample_GetWorkSheetName()関数は、任意の名前です。
なお、ワークシートの任意のセルにExcel関数の様に入力します。
※=Sample_GetWorkSheetName()
また、Sample_GetWorkSheetName()関数は、標準モジュールのModule1モジュール内に記述します。
- Volatileメソッドにより、ワークシート名が変更された場合にも直ちに新しいワークシート名を取得する様にする。
- どのワークシートにこの関数を入力しても、引数を必要とせず、正しいワークシート名を取得できる様にする。
- #Ifディレクティブを使用して、デバッグモードと本番モードで動作を変更する。
《ソースコード》
Option Explicit #Const DEBUG_VERSION = 1 ' 本番環境の場合は = 0 Public Function Sample_GetWorkSheetName() As String 'アクティブになっているワークシート名を返す。 'ユーザー定義関数の自動再計算の設定 Application.Volatile 'このユーザー定義関数を呼び出したオブジェクトを識別し、その名前を取得する。 Sample_GetWorkSheetName = Application.Caller.Parent.Name End Function
update:2009.01.21
Copyright (C) 2009 S.IKE