Jon想知道工作表是否有等于= ROW()或= COLUMN()的函数。他需要参考(例如)工作簿中的第四张纸,但是他不确定该工作纸的名称。

有两种方法可以解决此问题,具体取决于您需要执行的操作。如果要使用已保存的工作表,则以下公式将为您提供Sheet4的工作表名称:

=MID(CELL("filename",Sheet4!A1),FIND("]",CELL( "filename",Sheet4!A1))+1,LEN(CELL("filename", Sheet4!A1)))

您应该注意,此公式中有两个假设。

首先(也是最重要的是)假设您知道工作表的初始名称。在这种情况下,初始名称为Sheet4。公式到位后,对工作表名称的后续更改将自动反映在公式中。第二个假设是您正在使用的工作簿已保存。如果还没有,那么公式将返回错误,直到保存并重新计算工作簿。

另一种方法是使用用户定义的函数。在VBA的对象模型中,工作簿中的所有工作表都包含在Sheets集合中。这些反过来又被索引。因此,您可以将索引值传递给函数,并以集合的索引号获取工作表的名称。

Function TabName(snum As Long) As String     If snum > 0 And snum <= Sheets.Count Then         TabName = Sheets(snum).Name     End If End Function

例如,如果您想知道集合中第四个工作表的名称,则可以在工作表中使用以下内容:

=TabName(4)

即使在尚未保存的工作簿中,该功能也可以正常工作。即使工作表被重命名或移动,它也将返回正确的工作表名称。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(7607)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: