【问题标题】:Excel Worksheet_Change not triggering with cell value updateExcel Worksheet_Change 未通过单元格值更新触发
【发布时间】:2021-02-27 06:21:09
【问题描述】:

我进行了一些广泛的研究,但无法解决我的问题。我有一个 Excel 工作簿,我不断地从 OPC 服务器中提取一个值。该值存储在一组行中。每当我手动引入数据时,这都很有效,但是当单元格自动更新时,它就不起作用了。

    Private Sub Worksheet_Change(ByVal target As Range)
    'MsgBox = Target.Address
    If Not Application.Intersect(Range("B1:B2"), Range(target.Address)) Is Nothing Then
        Call CopyDataToRecord
    End If
End Sub

Sub CopyDataToRecord()

    Dim IndexI As Integer
    Dim IndexY As Integer
    Dim IndexMius As Integer
    Dim DufferLength As Integer
    
    DufferLength = 20
    IndexY = DufferLength + 5
    
    'Shift Data
    For IndexI = i To DufferLength
        IndexYMius = IndexY - 1
        Cells(IndexY, 1) = Cells(IndexYMius, 1)
        Cells(IndexY, 2) = Cells(IndexYMius, 2)
        IndexY = IndexYMius
    Next IndexI
    
    'Copy The Latest Data
    Range("A2:B2").Copy Range("A5:B5")
End Sub

【问题讨论】:

  • 你把代码放在工作表对象里了吗?还是你不小心把它放到了一个模块中?
  • 没有触发事件过程的原因只有 3 个。 (1) 程序格式错误。您发布的看起来很完美,但最好让 VBA 为您创建它。 (2)Application.EnableEvents = False。重新启动 Excel 会将属性设置为 True。 (3) 事件发生但未被识别。这是因为该过程不在工作表的代码模块中,正如@braX 所建议的那样。将其移至该代码模块。
  • 通过公式更新单元格时不会触发 Change 事件。如果您遇到这种情况,您需要更改为计算事件,或在 VBA 中使用 OnTime 安排更新。两者都很好地涵盖了 SO

标签: excel vba plc opc dde


【解决方案1】:

您的代码(有点适合声明 iIndexYMius)在我的 Excel 工作表上运行良好。 我只是建议通过使用Application.EnableEvents 保护更改来防止递归Worksheet_Change 调用:

Private Sub Worksheet_Change(ByVal target As Range)
    'MsgBox = Target.Address
    If Not Application.Intersect(Range("B1:B2"), Range(target.Address)) Is Nothing Then
        Application.EnableEvents = False
        Call CopyDataToRecord
        Application.EnableEvents = True
    End If
End Sub

【讨论】:

    【解决方案2】:

    顺便说一句,如果你的代码不是由自动更新过程触发的,可能是因为这个过程在某处包含一个Application.EnableEvents = False,它阻止了Worksheet_Change被执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多