3

答えは「不可能」だと思いますが、この素晴らしいコミュニティに質問しても害はありません!

特定のワークシートに固有の Excel 2013 UDF (ユーザー定義関数) があります。

現在、このUDFは、含まれているワークブックの「モジュール」にあります。しかし、私がやりたいことは、UDF コードを「ワークシート オブジェクト」に配置して、その特定のワークシートでのみ使用できるようにすることです。

もちろんやってみたのですが、見えないので当然 #NAME? エラー。関数の前に Public を付けようとしましたが (とにかくオブジェクトを無効にします)、役に立ちませんでした。

特定のトリックを知っている人はいますか?

前もってありがとう、ニック。

4

2 に答える 2

2

関数の要件によっては、目的のワークシートで正しい答えのみを返す句を使用できます。

関数が入力として範囲を取るとしましょう。

Function CheckSheet(r As Range)
    If r.Parent.Name = "Intended Sheet Name" Then
        CheckSheet = "The correct value!"
    Else
        CheckSheet = CVErr(xlErrNA)
    EndIf
End Function

編集:

以前のバージョンは、パラメーターとして受け取る範囲が目的のシートにある場合、別のシートで引き続き使用できます。次のように変更できます。

Function CheckSheet()
    If Application.Caller.Parent.Name = "Intended Sheet Name" Then
        CheckSheet = "The correct value!"
    Else
        CheckSheet = CVErr(xlErrNA)
    EndIf
End Function

関数Application.Callerを含むセルを返します。

于 2014-09-19T13:20:23.953 に答える
2

不可能です。UDF通常のモジュールにある必要があります。:)

于 2014-09-19T12:30:49.910 に答える