我有下面的脚本几乎可以做我想要的,但是我需要它才能启动,如果有人从范围E9中删除一个值:E17。它实际上不是一个SelectionEvent,它更像是一个Change_Event,但如果更改是删除,那么在我捕获它之前,该值就会从单元格消失。我认为SelectionEvent必须调用change事件。是否有意义?如果您需要澄清,请告诉我。谢谢!
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Application.EnableEvents = True
If Not Intersect(Target, Range("E9:E17")) Is Nothing Then
GetValue = ActiveCell.Value
GetCustomer = ActiveCell.Offset(0, -1).Value
With Sheets("LargeCustomerOP").Range("D2:D6") 'searches range in Col D
Set Rng = .Find(What:=GetCustomer, _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not Rng Is Nothing Then
Rng.Offset(0, 1).Value = Rng.Offset(0, 1).Value + GetValue
Else
'value not found
End If
End With
End If
Application.EnableEvents = True
End Sub
答案 0 :(得分:4)
将数据保存在全局变量Worksheet_SelectionChange
- 事件中,并在Worksheet_Change
- 事件中访问它。请参阅StackOverflow上的this example
答案 1 :(得分:0)
抱歉,没有时间编写代码,但我确定其他人可以帮助我们。
使用Worksheet_Change在隐藏工作表上创建工作表的镜像副本。你只需要反映你担心的范围。
每次更改时,请在事件中执行以下操作:
检查目标是否变为空白。如果是,则存储镜像中相同单元格的值。
将目标单元格的值复制到镜像上的同一单元格。
如果商店有值,请按照您的意愿采取行动。