3

我正在编写一个程序,它应该从给定的单元格地址获取所有依赖单元格,直接或间接影响同一张表中的其他单元格值。例如。

A1 = 10
A2 = A1+20
A3 = A2+30

如果我想要 A3 的依赖关系,它应该导致 A1 和 A2。

我已经使用了Range.Dependents应该给出所有依赖单元格的方法,但它失败了。所以交替地我试图使用Range.DirectDependents它只返回直接的单元格依赖并编写一个递归函数来为每个结果做同样的事情。例如。A3 列出 A2,然后 A2 再次递归返回 A1。

我的问题是

  1. 为什么 Range.dependents 无法正确列出所有嵌套的依赖单元格。

  2. 对每个单元格使用递归方法是个好主意吗?(我们不确定它们的深度)

这是我的示例代码

Dim Address As String
Try
    For Each DataRange In ValidRange
        cellAddress = DataRange.Address
        Try
            cellRange = DataRange.Dependents
            Slno = Slno + 1
            Address = cellRange.Address
            Output = Output & "<tr><td>" & Slno & "<td>" & cellAddress & "</td><td>" & Address & "</td></tr>"
        Catch ex As Exception
            'Skip if no dependencies found
        End Try
    Next
Catch ex As Exception
        Response.Write(ex.Message)
End Try
4

2 回答 2

7

快速尝试并发现以下内容

?Range("A1").Dependents.Address
$A$2:$A$3

?Range("A2").Dependents.Address
$A$3

?Range("A3").Dependents.Address
Run-time error

显然,您正在寻找的是Range.Precedents

?Range("A3").Precedents.Address
$A$1:$A$2
于 2013-09-19T01:45:48.187 回答
3

试试这个 VBA 代码

Sub test()

    On Error Resume Next

    Dim cell As Range, c As Range
    Set cell = Range("A3").Precedents

    If cell Is Nothing Then Exit Sub

    For Each c In cell
        Debug.Print c.Address
    Next

End Sub

在此处输入图像描述

于 2013-09-19T01:46:19.937 回答