【问题标题】:Time stamp on formula based cell change triggered by DDE updateDDE 更新触发的基于公式的单元格更改的时间戳
【发布时间】:2019-10-30 00:49:50
【问题描述】:

我在 A 列中有数据,当 A 列中的数据发生变化时,我希望在 B 列中有一个时间戳。

现在是棘手的部分:A 列的值是基于公式的,来自 Vlookup 表。这个 Vlookup 表有 dde ​​链接。所以从来没有手动输入电子表格。

如果您必须在 A 列中输入数据,则下面的代码可以正常工作,但对于上述情况或即使您说,也不能正常工作。单元格A1 = C1+D1。通过更改 C1 或 D1 将更改 A1 ...但这不会启动宏。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then
        Cells(Target.Row, 2).Value = Now
    End If
End Sub

【问题讨论】:

  • 更新 VLookup 表时是否会触发 Worksheet_Change?你有什么样的公式?它们是分布在多张纸上,还是只铺在一张纸上?我知道Worksheet_Calculate() 会被触发,但它不会提供Target 范围。

标签: excel event-handling updates dde vba


【解决方案1】:

我对这些事情不太熟悉,但在我的工作簿中将 Oracle DB 选择触发器Worksheet_Change 事件与您的代码在刷新时相关联。但是,您的情况可能是另一回事 - 我没有看到您的数据结构。

无论如何,请尝试使用以下技巧:在 A 列的某处添加任何简单的公式,例如=A1(如果 A1 在 DDE 更新时发生变化)- 它应该在刷新时发生变化,因此会触发 Worksheet_Change 事件。

在此处阅读更多信息:DDE links in Excel 2000 - how to run a macro

【讨论】:

  • 我已经多次看到这个建议,但它总是不起作用!来自另一个应用程序的 DDE 戳不会触发“更改”事件,也不会触发间接引用。从 97 年到 2003 年,我使用不同版本的 Excel 进行了尝试,但结果相同(缺乏)。迄今为止,我还没有找到从 dde ​​数据更改触发事件的方法,我真的希望人们在发布示例之前花点时间尝试一下。
【解决方案2】:

DDE 确实触发Worksheet_Change() 事件。但是,DDE 确实会触发Worksheet_Calculate() 事件。当发生 DDE 更新时,您可以使用它来捕获。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    相关资源
    最近更新 更多