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

标签 excel 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上的相应单元格中显示日期。 例如。如果我在 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/

相关文章:

sql - 如何将整个 Excel 列分配给 Access 上 VBA 内的变量?

excel - Excel中有没有类似于Ruby的Split方法的函数?

vba - Excel VBA 从文件夹中的文件更新主列表

python - Openpyxl - 如何在 Python 中只读取 Excel 文件中的一列?

javascript - CSV、PDF、Excel 文件在数据表的导出扩展中作为 blob 下载

vba - 从 Excelsheet 以横向格式导出 PDF,无空格

mysql - VBA 连接到 MySQL 数据库

vba - 无法修复类型不匹配错误

VBA for Excel : Error 424 Object Required

Excel Debug模式失败