创建Excel函数以返回工作表的名称
我试图创建一个函数来返回函数所在的工作表的名称。但是,下面的代码返回函数所在的活动工作表,而不是静态工作表。 我以前有一个标准的excel公式来给我工作表的名称,如果vba无法返回函数所在的工作表,我可以返回到这个公式 图纸名称“TTD” Excel公式 +文件表名称(C1) =TTD VBA函数创建Excel函数以返回工作表的名称,excel,vba,function,Excel,Vba,Function,我试图创建一个函数来返回函数所在的工作表的名称。但是,下面的代码返回函数所在的活动工作表,而不是静态工作表。 我以前有一个标准的excel公式来给我工作表的名称,如果vba无法返回函数所在的工作表,我可以返回到这个公式 图纸名称“TTD” Excel公式 +文件表名称(C1) =TTD VBA函数 Function FileSheetName(aCellLocation) Application.Volatile aCellLocation = aCellLocation.A
Function FileSheetName(aCellLocation)
Application.Volatile
aCellLocation = aCellLocation.Address
Set aCellLocation = Range(aCellLocation)
aSheetName = aCellLocation.Parent.Name
FileSheetName = aSheetName
End Function
您的函数参数已经是一个范围-无需获取地址,然后从中创建一个范围:
Function FileSheetName(aCellLocation As Range)
Application.Volatile
FileSheetName = aCellLocation.Parent.Name
End Function
在这里:
范围的范围默认为活动工作表:这就是为什么当带有公式的工作表不是所选工作表时,您的结果是错误的。您的函数参数已经是一个范围-无需获取地址,然后从中创建一个范围:
Function FileSheetName(aCellLocation As Range)
Application.Volatile
FileSheetName = aCellLocation.Parent.Name
End Function
在这里:
范围的范围默认为活动工作表:这就是为什么当带有公式的工作表不是所选工作表时,结果是错误的。您可以使用application.caller:
不需要使用范围,因为range.parent.name将给出范围的sheetname,而不是函数所在的位置(可能不同)
您可以使用application.caller:
不需要使用范围,因为range.parent.name将给出范围的sheetname,而不是函数所在的位置(可能不同)
太好了,正是我想要的!我喜欢答案这么简单。太棒了,正是我想要的!我喜欢答案如此简单。
Function FileSheetName2()
FileSheetName2 = Application.Caller.Parent.Name
End Function