Excel 当单元格包含引用另一工作表中另一单元格的公式时,如何获取要更新的时间戳?

Excel 当单元格包含引用另一工作表中另一单元格的公式时,如何获取要更新的时间戳?,excel,vba,timestamp,range,automatic-updates,Excel,Vba,Timestamp,Range,Automatic Updates,以下代码为我提供了初始时间戳(N)和更新时间(O) 当手动更新工作表1上的D列中的单元格时,此操作有效 单元格现在位于列D工作表1参考工作表2列E中。因此,例如WORKSHEET1上的D4就是='WORKSHEET2'!E23 当更新工作表2上的值时,工作表1上的D列将自动更新 然后,下面的时间戳代码停止工作,并且不会拾取此值更改。 我是否可以插入VBA代码,以便在我更改工作表2上的值时,由于celD中的公式,它会在工作表1上更新,时间戳会起作用 Private Sub Worksheet_Ch

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

当手动更新
工作表1
上的
D
列中的单元格时,此操作有效

单元格现在位于列
D
工作表1
参考
工作表2
E
中。因此,例如
WORKSHEET1
上的
D4
就是
='WORKSHEET2'!E23

当更新
工作表2上的值时,
工作表1上的
D
列将自动更新

然后,下面的时间戳代码停止工作,并且不会拾取此值更改。 我是否可以插入VBA代码,以便在我更改
工作表2
上的值时,由于cel
D
中的公式,它会在
工作表1
上更新,时间戳会起作用

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
试试这个-

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
Private子工作表_Calculate()
Dim myTableRange作为范围
Dim myDateTimeRage作为范围
Dim MyUpdateRange作为范围
设置myTableRange=Range(“D1:D314”)
对于myTableRange中的每个单元格
将值作为变量
Application.EnableEvents=False
应用程序。撤消
OldValue=单元格值
应用程序。撤消
Application.EnableEvents=True
如果是OldValue单元格.Value,则
设置myDateTimeRage=范围(“N”和cell.Row)
设置MyUpdateRange=Range(“O”和cell.Row)
如果myDateTimeRage.Value=”“,则
myDateTimeRage.Value=Now
如果结束
MyUpdateRange.Value=现在
如果结束
下一个细胞
试试这个-

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
Private子工作表_Calculate()
Dim myTableRange作为范围
Dim myDateTimeRage作为范围
Dim MyUpdateRange作为范围
设置myTableRange=Range(“D1:D314”)
对于myTableRange中的每个单元格
将值作为变量
Application.EnableEvents=False
应用程序。撤消
OldValue=单元格值
应用程序。撤消
Application.EnableEvents=True
如果是OldValue单元格.Value,则
设置myDateTimeRage=范围(“N”和cell.Row)
设置MyUpdateRange=Range(“O”和cell.Row)
如果myDateTimeRage.Value=”“,则
myDateTimeRage.Value=Now
如果结束
MyUpdateRange.Value=现在
如果结束
下一个细胞

在保存代码的工作表中检测到更改时,此代码将运行。另外,如果不限定工作表,
Range()
将引用活动工作表(我假设该工作表与存储此代码的工作表相同)。将代码放入工作表2中,然后更改工作表1上的单元格。因此,设置范围后是否应使用with?要引用非活动工作表上的范围?不确定使用什么函数当在保存代码的工作表中检测到更改时,此代码将运行。另外,如果不限定工作表,
Range()
将引用活动工作表(我假设该工作表与存储此代码的工作表相同)。将代码放入工作表2中,然后更改工作表1上的单元格。因此,设置范围后是否应使用with?要引用非活动工作表上的范围?不确定要使用什么函数感谢您的响应,此代码有一个编译错误。“预期结束子”并突出显示黄色代码的第一行。@leslie只需在最后一行代码后添加
end-sub
,它就会工作。感谢您的响应,此代码有一个编译错误。“预期结束子”它突出显示黄色代码的第一行。@leslie只需在最后一行代码后添加
End Sub
,它就可以工作了。