流
我已阅读围绕这一话题很多职位实况数据时Worksheet_Change不火起来,但似乎没有任何对我的工作情况流
我想在其中包含实时数据馈电单元的变化(B2)Call Sub
从外部来源 - last updated
:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Target.Worksheet.Range("B2")) Is Nothing Then
Call SubName
End If
End Sub
我经过无数的帖子建议检查是否Äpplication.EnableEvents = True
,或创建功能检测改变去(这不工作,但我不能调用函数内分) - 没有成功。
Interestnigly enough, when I click on B2 and press enter - it executes the sub
感谢
说电池A1由流更新。该更新将不会触发之一:
- Worksheet_SelectionChange
- Worksheet_Change
你需要做的是建立一个公式某处:
=A1
当A1是刷新,公式单元格将重新计算,您可以使用计算事件来检测它。
Ahhh - “计算”事件 - 当然!这也适用于OP的单元格B2,因为它也只是一个公式。 – YowE3K
这并不完全正确,因为OP没有说明他们'流'的含义。如果单元格A1值属性发生更改,则会触发Worksheet_Change事件(例如COM写入Excel)。如果用户选择另一个单元格,它将触发Worksheet_SelectionChange事件。如果单元格A1是公式并重新计算公式,则Worksheet_Calculate将触发(例如DDE或从另一个Worksheet中重新计算)。另外,它可能是用户正在监视错误的工作表以捕获“真正的”串流“事件。 – user3357963
@ user3357963你的评论是有用的......使用*计算*的好处是,我从来没有知道它失败了...使用*计算*的难度是获得错误触发器的机会,如果工作表是为其他原因。 –
,你可以简单地去
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then SubName
End Sub
@ YowE3K,是的,我错了关于Range对象的Worksheet属性。我其实从来没有使用它,并总是使用'Parent'属性。我编辑了代码。谢谢 – user3598756
不幸的是,这一个也不工作。令我困惑的是,当我点击B2并按下回车键时,它按预期工作(调用子) –
该单元格是如何正常更新的? – user3598756
代码看起来正确。您是否将工作表对象中的代码保存在您希望被触发的工作表中?如果你只是将它保存在模块中,它将不起作用。 –
为什么你需要'如果不相交(Target,Target.Worksheet.Range(“B2”))是Nothing Then',只需使用'If Not Intersect(Target,Range(“B2”))Is Nothing Then' –
Thx为了您的回应 - 是的,代码在我正在使用的工作表中。很有意思的是,当我点击B2并按下回车键 - 它执行该子程序。 –