Excel VBA递归获取依赖单元格

Aja*_*ayR 3 vb.net excel

我正在编写一个程序,它应该从给定的单元格地址获取所有依赖单元格,直接或间接地影响同一工作表中的其他单元格值.对于前者

A1 = 10
A2 = A1+20
A3 = A2+30
Run Code Online (Sandbox Code Playgroud)

如果我想要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
Run Code Online (Sandbox Code Playgroud)

sam*_*092 6

快速尝试,发现以下内容

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

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

?Range("A3").Dependents.Address
Run-time error
Run Code Online (Sandbox Code Playgroud)

显然,你在寻找的是 Range.Precedents

?Range("A3").Precedents.Address
$A$1:$A$2
Run Code Online (Sandbox Code Playgroud)