使用 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
我在 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