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
上的值时,由于celD
中的公式,它会在工作表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
,它就可以工作了。