我目前正在处理Excel 2007插件,需要从工作表中监控一系列单元格。 我设法为工作表实现Change事件,如果更改发生在我感兴趣的单元格范围内,我正在做一些业务逻辑。 我的问题是,在细胞范围内,我有一些细胞使用来自“兴趣范围”之外的其他细胞的公式得到它们的值。 如果包含公式的其中一个单元格发生更改,则不会触发Change事件。
即使对于包含公式的单元格,如何捕获更改事件?
提前多多感谢! 安德烈
答案 0 :(得分:1)
这可能会有所帮助:
Function GetPrecedents(rInput As Range) As Range
' Returns combined range of all precedents of the input range.
Dim rCell As Range, rPrec As Range, rOutput As Range
On Error Resume Next
For Each rCell In rInput
For Each rPrec In rCell.DirectPrecedents
If Not rPrec Is Nothing Then
If rOutput Is Nothing Then
Set rOutput = rPrec
Else
Set rOutput = Union(rOutput, rPrec)
End If
End If
Next
Next
Set GetPrecedents = rOutput
End Function
现在当然,如果你真的想变得聪明,你需要让这个递归来考虑先例的先例的先例......但我没有时间。
答案 1 :(得分:0)
尝试使用Worksheet_Calculate()
事件。
只要重新计算工作表,就会触发它,因此它会捕获工作表中任何单元格的公式引发的更改。