繁体   English   中英

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

[英]Workbook_SheetChange not triggered by change from formula in other worksheet

我正在尝试植入满足特定条件时显示消息的代码。 在这种情况下,应该在Sheet2's A1's值等于或大于1000时发生。另一方面,此值由Sheet1的公式定义。 我尝试基于此线程实施解决方案: 每次单元格获取的值被公式更改时,如何运行VBA代码?

所以我得到了这个:

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

当我通过Sheet2更改A1的值时,它可以工作,但是例如,如果我将其定义为=Sheet1!A7 ,并更改Sheet1's A7 ,则什么都不会发生。

我该如何运作?

好了,链接的线程处理了您想找出由当前更改重新计算的单元格的问题。 (无论如何, 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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM