2

SheetA、SheetB、および SheetC の 3 つのタブを含む xls ワークブックがあるとします。関数が呼び出されたシートの名前を返す簡単な VBA 関数を書きたいと思います。

Function SheetName as String
    SheetName = ???
End Function

したがって、Tab SheetB で =SheetName() を呼び出すと、常に SheetB が返されます。

ノート:

 ActiveSheet.Name

SheetA を使用してワークブックを計算すると、SheetA が返されるため、機能しません。

4

2 に答える 2

3

これは機能します:

Function SheetName as String
    SheetName = Application.Caller.Worksheet.Name
End Function

実際問題として、このような呼び出し元に依存する機能を関数で使用する場合は、非常に注意する必要があります。後であなた (またはもっと悪い場合は他の誰か) が何かをデバッグしようとしているときに、関数がコードから呼び出されたとき、またはデバッガー/イミディエイト ウィンドウで呼び出されたときとは異なる動作をすることに気付かないと、それは本当の悪夢になる可能性があります。実際の使用中。

于 2013-07-09T14:50:03.520 に答える