我正在尝试在一个页面上生成3个列表,这些列表显示A:使用INDIRECT公式和连接的前3天工作表的范围(例如:INDIRECT(“'”& B2&“'!'A2 “)其中B2等于t的名称,但我需要将前一天工作表的名称(例如:10-17)拉到单元格B2中。
我有一个工作函数,可以通过相对位置在另一个工作表中找到单元格的值,但我似乎无法通过相对位置获取工作表名称。
Function NextSheet(rCell As Range)
Application.Volatile
Dim i As Integer
i = rCell.Cells(1).Parent.Index
NextSheet = Sheets(i + 3).Range(rCell.Address)
End Function
和另一个可以返回工作表的工作表名称的函数:
Function SheetName(rCell As Range, Optional UseAsRef As Boolean) As String
Application.Volatile
If UseAsRef = True Then
SheetName = "'" & rCell.Parent.Name & "'!"
Else
SheetName = rCell.Parent.Name
End If
End Function
但我似乎无法一起使用它们(即:NextSheet(SheetName(A2))或SheetName(NextSheet(A2))是否有类似的函数我可以用相对位置返回工作表名称?< / p>
次要问题:我是否可以在其他用户创建的函数中调用用户创建的函数,或者它们是否未正确设置以在彼此内部调用?
答案 0 :(得分:0)
第1部分:
您可以使用Excel对Sheets对象的索引。
没有错误捕获:
Sheets(ActiveSheet.Index + 1).Name
'or
Sheets(Sheets("Sheet1").Index + 1).Name
您将不得不处理在最后一张纸上尝试此操作的情况(错误9:下标超出范围)
第2部分:
是的,可以嵌套调用。一个返回值将传递给下一个,因此像foo(bar(test(5)))
这样的函数是有效的