每次我在 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
uj5u.com熱心網友回復:
以下代碼將以比原始代碼更簡單的方式添加/洗掉作業表 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/465695.html
