Excel VBArecursion获取相关单元格
我正在写一个程序,应该从给定的单元格地址获取所有的依赖单元格,直接或间接地影响同一表单中的其他单元格值。 例如。
A1 = 10 A2 = A1+20 A3 = A2+30
如果我想要A3的依赖关系,应该导致A1和A2。
我已经使用了方法Range.Dependents
应该给所有依赖的单元格,但它失败了。 所以交替我试图使用Range.DirectDependents
只返回立即单元格依赖项,并写一个recursion函数做每个结果相同。 例如。 A3列表A2,再次A2recursion地返回A1。
我的问题是
-
为什么Range.dependents无法正确列出所有嵌套相关单元格。
-
对每个单元格使用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