使用 vba 根据行值更新列中的相应单元格

Update corresponding cell in a column based on row value using vba

我在 sheet1 的不同行和列中输入数据。每次我在 sheet1 中输入一个值时,我都试图在 sheet2 中显示一个日期。

这是我在 Sheet1 中的内容:

`Sub Worksheet_Change(ByVal Target As Range)
 
  If Not Intersect(Target, Range("I7:NF1000")) Is Nothing Then
    Sheet2.Range("E7:E") = Now
 End If
End Sub`

代码有效,但问题是每当更新 Sheet1 范围内的单元格时,它都会在 Sheet2 的 E 列中的所有单元格中输入日期。 我如何让它只在 sheet2 的相应单元格中显示日期。 例如。如果我在工作表 1 的 I8 中输入一个值,我希望日期出现在工作表 2 的 E8 中。 我可以对每一行执行此操作,但这意味着我需要将 If Not 函数复制 1000 多次才能覆盖所有行。请参见下文:

`If Not Intersect(Target, Range("I8:NF8")) Is Nothing Then
    Sheet2.Range("E8") = Now
 End If
If Not Intersect(Target, Range("I9:NF9")) Is Nothing Then
    Sheet2.Range("E9") = Now
 End If`

等等....有没有办法避免这种情况并有一个更简单的代码可以做到这一点,而我没有 1000 多行代码..

工作表更改:另一个工作表中的时间戳

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