我在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上的相应单元格中显示日期。 例如。如果我在 Sheet1 的 I8 中输入一个值,我希望日期出现在 Sheet2 的 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
关于excel - 使用vba根据行值更新列中的相应单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72007609/