1

特定の条件が満たされたときにメッセージを表示するコードを実装しようとしています。この場合、Sheet2's A1's値が 1000 以上の場合に発生するはずです。 一方、この値は にある式で定義されSheet1ます。このスレッドに基づいてソリューションを実装しようとしました: How can I run a VBA code each time a cell get is value changed by a formula?

だから私はこれを得た:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim updatedCell As Range
Set updatedCell = Range("A1")

If Not Application.Intersect(updatedCell, Range("A:A")) Is Nothing Then
    If updatedCell.Value >= 1000 Then
        MsgBox "Something requires attention"
    End If
End If
End Sub

A1から何かを介して の値を変更するSheet2と機能しますが、たとえば、 と定義して=Sheet1!A7変更するSheet1's A7と、何も起こりません。

どうすればそれを機能させることができますか?

4

1 に答える 1

1

さて、リンクされたスレッドは、現在の変更によって再計算されるセルを見つけたいという問題を扱います。(とにかく、このDependentsメソッドはアクティブなシートの数式に対してのみ機能するため、シート間では機能しません)。あなたの場合、1 つの特定の (数式) セルのみを監視する必要があることは既にわかっています。Sheet2!A1 が sheet1 の値のみに依存することがわかっている場合は

このコードをシート 1に配置します。
すべての変更をキャッチして、毎回セルを確認してください。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Worksheets("Table2").Range("A1").Value >= 1000 Then
        MsgBox "Something requires attention"
    End If
End Sub

Worksheets(...).Range を使用していることを確認してください - 空白Rangeは、エラーハントの眠れない夜の原因になる可能性があります。コードがワークシート モジュールにある場合はコードが配置されているワークシートを参照し、アクティブなシートが別のコード モジュールにある場合。

于 2013-06-27T20:19:14.223 に答える