是否有任何事件可以检测是否在工作表的某个单元格上按下了DELETE键?
这是我的示例代码:
Public Sub Worksheet_Selection_Change(ByVal Target As Range)
oldValue = Target.Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
newValue = Target.Value
If oldValue <> newValue Then "Do Somthing"
End Sub
假设A1 = 10,则选择A1并删除该值。所以newValue = NULL和oldValue = 10 然后,您立即在单元格中键入“ 20”,因此newValue = 20并且oldValue应该为NULL,但仍为“ 10”。 我需要检查是否按Delete键来更新oldValue
Private Sub Worksheet_Change(ByVal Target As Range)
newValue = Target.Value
If "Delete key Pressed" Then oldValue = ""
If oldValue <> newValue Then "Do Somthing"
End Sub
答案 0 :(得分:3)
您可以使用Application.OnKey
将过程分配给按键。
Private Sub Worksheet_Activate()
Application.OnKey Key:="{DEL}", Procedure:="DoSomething"
End Sub
Private Sub Worksheet_Deactivate()
Application.OnKey Key:="{DEL}"
End Sub
Public Sub DoSomething()
MsgBox "Delete button pressed!"
Selection.Clear
End Sub
我使用 Selection.Clear
命令是因为OnKey会覆盖键的标准行为。如果您不想删除单元格的内容,则将其注释掉。
答案 1 :(得分:0)
感谢所有人的帮助,我找到了一个非常简单的解决方案,不需要检查是否按了DELETE键。检查条件后,只需用newValue更新oldValue。
Public Sub Worksheet_Selection_Change(ByVal Target As Range)
oldValue = Target.Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
newValue = Target.value
If oldValue <> newValue Then "Do Somthing"
oldValue = newValue ***
End Sub