0

我目前正在开发一个 Excel 2007 插件,需要监视工作表中的一系列单元格。我设法为工作表实现了 Change 事件,如果更改发生在我感兴趣的单元格范围内,我正在做一些业务逻辑。我的问题是,在单元格范围内,我有几个单元格使用我的“兴趣范围”之外的其他单元格的公式获取它们的值。如果包含公式的单元格之一发生更改,则不会触发 Change 事件。

即使对于包含公式的单元格,我如何才能捕获更改事件?

提前非常感谢!安德烈

4

2 回答 2

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

现在当然,如果你真的想变得聪明,你需要让这个递归来考虑先例的先例......但我没有时间。

于 2012-10-05T13:19:13.587 回答
0

尝试使用该Worksheet_Calculate()事件。

每当重新计算工作表时都会触发它,因此它将捕获工作表中任何单元格的公式引起的更改。

于 2012-10-05T12:50:58.643 回答