我曾尝试进行搜索,但无法找到正确的术语来获得良好的结果。
我正在寻找一种方法或建议来在 Excel 中创建一个宏,该宏将从一个单元格复制数据并在每次更改时将其插入到新行中。
我希望能够积累大约 50 条数据变化的历史记录。
谢谢杰夫
答案1
以下是一个快速代码片段,可帮助您入门并提供一些要搜索的内容。此代码将监视单元格 A1,如果其发生变化,它将记录其变化的时间以及第 3 行中变化后的值。这可能需要一些额外的逻辑才能发挥作用。代码进入正在更改的工作表的 VBA 代码中。
Private Sub Worksheet_Change(ByVal Target As Range)
'WatchedCell is the cell we want to log changes of, I used cell A1
Dim WatchedCell As Range
Set WatchedCell = Application.ActiveSheet.Range("A1")
'Target comes from the Worksheet_Change event and tells us what changed in the event
'See if the watched cell is among the cells which changed
Dim Inter As Range
Set Inter = Intersect(WatchedCell, Target)
'Insert a row to record the time in the column A and the value after the change in column B
If Not Inter Is Nothing Then
Rows(3).EntireRow.Insert
Application.ActiveSheet.Range("A3") = Now()
Application.ActiveSheet.Range("B3") = WatchedCell
End If
End Sub
一个重要的问题(Gary's Student 在你的问题评论中暗示了这一点)是,例如,如果单元格 A1 是一个公式,并且只在单元格 A2 发生变化时发生变化,那么工作表_更改当您更改 A2 时,事件无法识别 A1 已发生更改,因为它是由于 Worksheet_Calculate 事件而更改的。