我正在编写一个程序,它应该从给定的单元格地址获取所有依赖单元格,直接或间接地影响同一工作表中的其他单元格值。 对于前。
A1 = 10
A2 = A1+20
A3 = A2+30
如果我想要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
答案 0 :(得分:6)
快速尝试并找到以下
?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
答案 1 :(得分: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