【问题标题】:How do i get the Timestamp to update, when the cell contains a formula referencing another cell in another worksheet?当单元格包含引用另一个工作表中另一个单元格的公式时,如何更新时间戳?
【发布时间】:2019-11-26 19:54:04
【问题描述】:

以下代码为我提供了初始时间戳 (N) 和更新时间 (O)。

当手动更新WORKSHEET1 上的D 列中的单元格时,此方法有效。

单元格现在在列DWORKSHEET1 引用WORKSHEET2E。因此,例如WORKSHEET1 上的D4='WORKSHEET2'!E23

WORKSHEET2 上的值更新时,WORKSHEET1 上的D 列会自动更新。

然后下面的时间戳代码将停止工作,并且不会获取此值更改。 我可以插入一个 VBA 代码,以便当我更改 WORKSHEET2 上的值,并且由于 cel D 中的公式而更新 WORKSHEET1 上的值时,时间戳会起作用吗?

Private Sub Worksheet_Change(ByVal Target As Range)

Dim myTableRange As Range

Dim myDateTimeRage As Range

Dim myUpdatedRange As Range

Set myTableRange = Range("D1:D314")

If Intersect(Target, myTableRange) Is Nothing Then Exit Sub

Set myDateTimeRage = Range("N" & Target.Row)

Set myUpdatedRange = Range("O" & Target.Row)

If myDateTimeRage.Value = "" Then

    myDateTimeRage.Value = Now
End If

myUpdatedRange.Value = Now

End Sub

【问题讨论】:

  • 当在保存代码的工作表中检测到更改时,此代码将运行。此外,如果没有限定工作表,Range() 将引用活动工作表(我假设它与存储此代码的工作表相同)。
  • 将代码放入Worksheet2代码中,然后更改worksheet1上的单元格。
  • 所以我应该在设置范围后使用 with 吗?引用非活动工作表上的范围?不知道用什么功能

标签: excel vba timestamp range automatic-updates


【解决方案1】:

试试这个 -

Private Sub Worksheet_Calculate()
    Dim myTableRange As Range
    Dim myDateTimeRage As Range
    Dim myUpdatedRange As Range
    Set myTableRange = Range("D1:D314")   

    For Each cell In myTableRange
        Dim OldValue As Variant
        Application.EnableEvents = False
        Application.Undo
        OldValue = cell.Value
        Application.Undo
        Application.EnableEvents = True
        If OldValue <> cell.Value Then
            Set myDateTimeRage = Range("N" & cell.Row)
            Set myUpdatedRange = Range("O" & cell.Row)    
                If myDateTimeRage.Value = "" Then
                    myDateTimeRage.Value = Now
                End If
            myUpdatedRange.Value = Now
        End If    
    Next cell

【讨论】:

  • 感谢您的回复,此代码有编译错误。“预期结束子”并将第一行代码突出显示为黄色。
  • @leslie 只需在最后一行代码后添加End Sub 即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-29
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多