1

我正在尝试提出一个 VBA 公式,该公式将采用一个单元格,并返回该单元格引用的范围。这是我到目前为止所拥有的:

Function GetAddressCellPointsTo(ByRef src As Range) As Range
    On Error GoTo InvalidSrc
    referenceText = Replace(src.Formula, "=", "")
    Set GetAddressCellPointsTo = Range(referenceText)
    Exit Function
InvalidSrc:
    err.Raise 1, "GetAddressCellPointsTo", "The formula of the source cell must be a single reference to another cell or range."
End Function

问题是我知道如果单元格不包含有效范围,或者如果引用在源单元格中没有完全限定(即=A1vs =Sheet1!A1),或者如果单元格指向一个命名范围。

我想要做的是可靠地将引用拉到一个范围,如果那是单元格所指向的,否则返回一条错误消息。

4

1 回答 1

1

这是我认为符合您要求的轻微修改:

Function GetAddressCellPointsTo(ByRef src As Range) As Range
    referenceText = Replace(src.Formula, "=", "")
    On Error Resume Next
    'Return err.Number 1004 if referenceText not on current sheet
    Set GetAddressCellPointsTo = src.Parent.Range(referenceText)
    If Err.Number <> 0 Then
        On Error GoTo InvalidSrc
        Set GetAddressCellPointsTo = Range(referenceText)
    End If
    Exit Function
InvalidSrc:
    Err.Raise 1, "GetAddressCellPointsTo", "The formula of the source cell must be a single reference to another cell or range."
End Function

这将首先在 src 所在的工作表上找到引用。如果失败,它会为不在工作表上的任何参考做这件事,它会在不指定工作表的情况下尝试。

于 2013-11-13T21:33:04.533 回答