我正在尝试使用满足特定条件时显示消息的代码。在这种情况下,它应该在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
,则不会发生任何事情
我怎么能让它起作用?
答案 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 代码位于工作表模块中,如果它位于另一个代码模块中,则位于活动表中。