gpt4 book ai didi

excel - 如果从范围中删除数据,则删除时间戳

转载 作者:行者123 更新时间:2023-12-04 21:42:40 25 4
gpt4 key购买 nike

每次我在 sheet1 的某个范围内输入数据时,我都有这段代码用于在 sheet2 上获取时间戳。
这很好用,但是,如果数据被删除,我希望它删除时间戳。如果之前有现有数据,我还希望它返回到之前的时间戳。
请看下面描述它的两个场景。
例如1
我在 sheet1 上输入数量。
I7:1
这会提示代码在 sheet2 上的 E7 中放置时间戳。
如果我在 sheet1 上的 I7 中删除此值,则时间戳将保留在 sheet2 上的 E7 中。如果 Sheet1 的第 7 行没有值,我希望它删除它。
例如2
I7 中有一个从 26.04.22 开始的现有值,然后我在 27.04.22 的 J7 中输入另一个值,并将 sheet2 上 E7 中的时间戳更新为 27.04.22。但是,我意识到我犯了一个错误,这不是我想要将这些数据放入的正确单元格。所以我删除了J7中的值。完成此操作后,我希望 E7 中的时间戳返回 26.04.22,显示输入 I7 中的值的时间。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim srg As Range: Set srg = Range("I7:NF1000")
Dim irg As Range: Set irg = Intersect(srg, Target)
If irg Is Nothing Then Exit Sub

Set irg = Intersect(irg.EntireRow, Columns("E"))

Dim TimeStamp As Date: TimeStamp = Now

Dim arg As Range
For Each arg In irg.Areas
Sheet2.Range(arg.Address).Value = TimeStamp
Next arg

End Sub

最佳答案

以下代码将以比原始代码更简单的方式添加/删除工作表 2 上的时间戳。
您的方案 2 不可行,因为时间戳被覆盖并且无法检索,除非您想要构建历史值数据库,这需要更多代码。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet2")
If Not Intersect(Target, Range("I7:NF1000")) Is Nothing Then
For Each rng In Target
If rng = "" Then
ws.Range("E" & rng.Row).ClearContents
Else
ws.Range("E" & rng.Row) = Now
End If
Next rng
End If
End Sub

关于excel - 如果从范围中删除数据,则删除时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72021783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com