Workbook_SheetChange不是由其他工作表中的公式更改触发的

时间:2013-06-27 20:01:44

标签: excel vba

我正在尝试使用满足特定条件时显示消息的代码。在这种情况下,它应该在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,则不会发生任何事情

我怎么能让它起作用?

1 个答案:

答案 0 :(得分:0)

好吧,链接的线程处理您想要找出当前更改重新计算的单元格的问题。 (无论如何,Dependents方法仅适用于活动工作表上的公式,因此这不适用于工作表)。 在您的情况下,您已经知道您只想监视一个特定的(公式)单元格 所以,我只想这样做:
如果您知道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

确保使用工作表(...)。范围 - 空白Range可能是错误寻找的不眠之夜的来源,它指的是代码所在的工作表 if 代码位于工作表模块中,如果它位于另一个代码模块中,则位于活动表中。