Excel VBArecursion获取相关单元格

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

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

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

我已经使用了方法Range.Dependents应该给所有依赖的单元格,但它失败了。 所以交替我试图使用Range.DirectDependents只返回立即单元格依赖项,并写一个recursion函数做每个结果相同。 例如。 A3列表A2,再次A2recursion地返回A1。

我的问题是

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

  2. 对每个单元格使用recursion方法是一个好主意。 (我们不确定他们有多深)

这是我的示例代码

 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 

做了一个快速尝试,发现以下内容

 ?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 

试试这个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 

在这里输入图像描述