使用相对引用查找工作表的工作表名称

时间:2017-10-17 17:35:31

标签: excel vba reference relative

我正在尝试在一个页面上生成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>

次要问题:我是否可以在其他用户创建的函数中调用用户创建的函数,或者它们是否未正确设置以在彼此内部调用?

1 个答案:

答案 0 :(得分:0)

第1部分:
您可以使用Excel对Sheets对象的索引。

没有错误捕获:

Sheets(ActiveSheet.Index + 1).Name
'or
Sheets(Sheets("Sheet1").Index + 1).Name

您将不得不处理在最后一张纸上尝试此操作的情况(错误9:下标超出范围)

第2部分:
是的,可以嵌套调用。一个返回值将传递给下一个,因此像foo(bar(test(5)))这样的函数是有效的