HOME > 即効テクニック > Excel VBA > その他関連のテクニック > ユーザー定義関数の呼び出し元を制限する

即効テクニック

その他関連のテクニック

ユーザー定義関数の呼び出し元を制限する

(Excel 2000/2002/2003)
● 概要 ●
ApplicationオブジェクトのCallerプロパティで取得した値をTypeName関数でチェックすることで、ユーザー定義関数の呼び出し元をワークシートに限定することができます。

構文 TypeName(VarName)
設定項目    内容
VarName     変数を指定


次のサンプルは、引数に指定された値に応じた消費税額を計算するユーザー定義関数です。このユーザー定義関数がワークシートのセル以外から呼び出された場合には、エラーを発生させ、メッセージを表示します。


● サンプル ●
Function Sample(価格 As Currency) As Currency
    Dim PriceData As Currency
    Const ConsumptionTax As Double = 0.05
    
    On Error GoTo ErrHdl
    If TypeName(Application.Caller) <> "Range" Then
        Err.Raise 1000
    End If
    
    PriceData = 価格
    
    Sample = PriceData * ConsumptionTax
    
    Exit Function
ErrHdl:
    MsgBox "この関数は、ワークシートからの呼び出しのみ対応します"
End Function


● ポイント ●
このサンプルでは、ユーザー定義関数を作成する上でのテクニックがもう一つ含まれています。
この関数では引数には日本語を利用しています。これは、関数を利用するときに引数名が日本語表記の方がわかりやすいからです。
しかし、プログラムを作成する際には、変数名が日本語だと、VBEの入力支援機能が威力を発揮しにくくなります。
そこで、ユーザー定義関数の引数は日本語のままで、関数の内部で、別途変数を用意し、引数の値をその変数に受け取ることでこの問題を解決しています。