0

現在、Excel 2007 プラグインに取り組んでおり、ワークシートからセル範囲を監視する必要があります。ワークシートに Change イベントを実装することができました。興味のあるセルの範囲で変更が発生した場合は、いくつかのビジネス ロジックを実行しています。私の問題は、セルの範囲内に、「対象範囲」外の他のセルから数式を使用して値を取得するセルがいくつかあることです。数式を含むセルの 1 つが変更された場合、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 に答える