VBA复制单元格值之前更改事件到不同的工作表

我有“Sheet10”,其中单元格“F3”根据用户input做了一些计算和值更改。 用户input位于“Sheet10”单元格“G6”上。 我想复制最后的计算值“F3”在新的值之前变成“Sheet12”单元格“Q3”下面是我的代码,但我不知道我错了哪里。 提前致谢!

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = Range("F3").Address Then Worksheets("Sheet12").Range("Q3") = Target.Value End If End Sub 

这个问题之前曾经被问到过,但我现在懒得去search它…

由于Worksheet_Change事件单元更改触发, Target.Value将反映新值。 但是,通过将新值存储到variables中,可以使用“ Undo命令获取旧值,然后运行撤消操作,然后使用新值更新目标并将旧值存储在所需位置。

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = Range("G6").Address Then Application.EnableEvents = False Dim sOldValue As String, sNewValue As String sNewValue = Target.Value Application.Undo sOldValue = Range("F3").Value Target.Value = sNewValue Worksheets("Sheet12").Range("Q3") = sOldValue Application.EnableEvents = True End If End Sub 

对于多个单元这样做:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = Range("G6").Address Then Application.EnableEvents = False Dim sOldValue As String, sNewValue As String sNewValue = Target.Value Application.Undo Dim rOld as Range Set rOld = Range("F3:V3").Value Target.Value = sNewValue Range("V8:AD8").Value = rOld.Value Application.EnableEvents = True End If End Sub