我正在尝试创建一个函数来返回函数所在的工作表的名称。但是,下面的代码返回活动工作表,而不是函数所在的静态工作表。 我以前有一个标准的 excel 公式来给我工作表名称,如果 vba 无法返回函数所在的工作表,我可以回到这个公式?
工作表名称"TTD">
卓越公式 +文件表名称(C1(
=TTD
VBA 函数
Function FileSheetName(aCellLocation)
Application.Volatile
aCellLocation = aCellLocation.Address
Set aCellLocation = Range(aCellLocation)
aSheetName = aCellLocation.Parent.Name
FileSheetName = aSheetName
End Function
你可以使用 application.caller: 无需使用范围,因为 range.parent.name 将给出范围的工作表名称,而不是函数所在的位置(可能不同(
Function FileSheetName2()
FileSheetName2 = Application.Caller.Parent.Name
End Function
你的函数参数已经是一个范围 - 不需要获取地址,然后从中创建一个范围:
Function FileSheetName(aCellLocation As Range)
Application.Volatile
FileSheetName = aCellLocation.Parent.Name
End Function
这里:
Set aCellLocation = Range(aCellLocation)
Range
的范围默认为活动工作表:这就是为什么当包含公式的工作表不是所选工作表时,结果是错误的。