[英]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.