标签:VBA,工作表事件
当工作表单元格中的值被修改后,我需要将修改前的值放置到其右侧单元格中。例如,单元格A1中输入有数值1,当我将其内容修改为2之后,之前的数值1被放置到单元格B2中。可以使用工作表Change事件来实现。
在该工作表代码模块中输入代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sOldValue As String
Dim sNewValue As String
If Target.Address = Range("A1").Address Then
Application.EnableEvents = False
sNewValue = Target.Value
Application.Undo
sOldValue = Range("A1").Value
Target.Value = sNewValue
Worksheets("Sheet1").Range("B1") = sOldValue
Application.EnableEvents = True
End If
End Sub
这样,当在单元格A1中重新输入值时,原值会自动放置到单元格B1中。如下图1所示。
当一列单元格区域中的值发生改变时,需要将修改之前的值放置到相邻列对应单元格中,例如对于单元格区域A1:A10,其值发生改变时,原来的值会自动放置到单元格区域B1:B10对应的单元格中。仍然使用工作表Change事件来实现。
在该工作表代码模块中,输入代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngToProcess As Range
Dim sNewValue
Set rngToProcess = Intersect(Target, Range("A1:A10"))
If Not rngToProcess Is Nothing Then
Application.EnableEvents = False
sNewValue = Target.Value
Application.Undo
Target.Offset(, 1).Value = Target.Value
Target.Value = sNewValue
Application.EnableEvents = True
End If
End Sub
有兴趣的朋友可以试试看。
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。