问题描述:

我已阅读围绕这一话题很多职位实况数据时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

感谢

+1

代码看起来正确。您是否将工作表对象中的代码保存在您希望被触发的工作表中?如果你只是将它保存在模块中,它将不起作用。 –

+2

为什么你需要'如果不相交(Target,Target.Worksheet.Range(“B2”))是Nothing Then',只需使用'If Not Intersect(Target,Range(“B2”))Is Nothing Then' –

+0

Thx为了您的回应 - 是的,代码在我正在使用的工作表中。很有意思的是,当我点击B2并按下回车键 - 它执行该子程序。 –

说电池A1由流更新。该更新将不会触发之一:

  • Worksheet_SelectionChange
  • Worksheet_Change

你需要做的是建立一个公式某处:

=A1 

A1是刷新,公式单元格将重新计算,您可以使用计算事件来检测它。

+0

Ahhh - “计算”事件 - 当然!这也适用于OP的单元格B2,因为它也只是一个公式。 – YowE3K

+1

这并不完全正确,因为OP没有说明他们'流'的含义。如果单元格A1值属性发生更改,则会触发Worksheet_Change事件(例如COM写入Excel)。如果用户选择另一个单元格,它将触发Worksheet_SelectionChange事件。如果单元格A1是公式并重新计算公式,则Worksheet_Calculate将触发(例如DDE或从另一个Worksheet中重新计算)。另外,它可能是用户正在监视错误的工作表以捕获“真正的”串流“事件。 – user3357963

+0

@ user3357963你的评论是有用的......使用*计算*的好处是,我从来没有知道它失败了...使用*计算*的难度是获得错误触发器的机会,如果工作表是为其他原因。 –

,你可以简单地去

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address = "$B$2" Then SubName 
End Sub 
+0

@ YowE3K,是的,我错了关于Range对象的Worksheet属性。我其实从来没有使用它,并总是使用'Parent'属性。我编辑了代码。谢谢 – user3598756

+0

不幸的是,这一个也不工作。令我困惑的是,当我点击B2并按下回车键时,它按预期工作(调用子) –

+0

该单元格是如何正常更新的? – user3598756