我正在编写一个程序,它应该从给定的单元格地址获取所有依赖单元格,直接或间接地影响同一工作表中的其他单元格值.对于前者
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.
我的问题是
为什么Range.dependents无法正确列出所有嵌套的依赖单元格.
对每个单元格使用递归方法是个好主意.(我们不确定它们的深度)
这是我的示例代码
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)
快速尝试,发现以下内容
?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)