如何从函数中获取当前工作表(非活动工作表)的名称? “当前表”是指放置和调用功能的表名。
我试着像那样
Function MySheet()
MySheet = Application.Caller.Worksheet.Name
MsgBox MySheet
End Function
但我得到了错误对象。
答案 0 :(得分:3)
您将不得不小心如何调用该功能。你提供了很多关于你想用它做什么的细节。
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
上面至少尝试在使用它来确定相关工作表对象的名称之前,先确定Application.Caller
是什么。
您可以在Application.Caller Property (Excel)了解更多信息。
答案 1 :(得分:-2)
http://www.formulaoldies.com/uploads/2012/06/Lionel-Richie.jpg
MsgBox Me.Name
如果你所说的“功能放置的工作表名称”是指放置功能代码的Sheet模块,那么这就是你想要的。 (Documentation)。
但是,如果您的意思是,包含从中调用用户定义函数的单元格的工作表,您可以使用:
MsgBox Application.Caller.Parent.Name
Application.Caller
返回一个引用该单元格的Range
对象;这个范围的Parent
就是表格。