№04. Excel VBA-[ワークシート名を取得するユーザー定義関数を作成する。] | GTZ&RSのブログ

GTZ&RSのブログ

GT-Z&RSでは、コンピュータ関連情報や地域情報を中心に発信しています。

№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