【发布时间】:2019-11-26 19:54:04
【问题描述】:
以下代码为我提供了初始时间戳 (N) 和更新时间 (O)。
当手动更新WORKSHEET1 上的D 列中的单元格时,此方法有效。
单元格现在在列DWORKSHEET1 引用WORKSHEET2 列E。因此,例如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