所以我需要做一些事情,第一个是按下删除键时运行一个宏,所以我发现了这个:
Private Sub Worksheet_Activate()
Application.OnKey "{DELETE}", "Intercept"
End Sub
Private Sub Worksheet_Deactivate()
Application.OnKey "{DELETE}"
End Sub
现在根据我读到的内容,这将使删除键无效,所以我还需要它同时清除当前活动的单元格,我发现了这个:
Sub SetValue()
Worksheets("Sheet1").Activate
ActiveCell.Value = 35
End Sub
和此:
Selection.Clear
但是,我是VBA的新手,所以我真的不知道如何将这些结合起来使用删除:)上的清除功能..任何帮助将不胜感激,谢谢。
答案 0 :(得分:1)
要设置活动单元格值,可以在模块中使用此功能:
Sub SetValue()
ActiveCell = Null ' to clear the contents
End Sub
或者您可以使用OP中的代码。
Worksheet_Activate()
和Worksheet_Deactivate
是Workbook
个函数。在您的VBAProject中,双击ThisWorkbook
并更改" General"到"工作簿"在下拉列表中。然后,在右侧的下拉列表中,您可以选择SheetActivate
和SheetDeativate
。添加这些功能并填写代码以禁用Sheet1
工作表上的 DELETE 键:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Sheet1" Then Application.OnKey "{DELETE}", "SetValue"
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
' This will enable DELETE
If Sh.Name = "Sheet1" Then Application.OnKey "{DELETE}"
End Sub
要在按下DELETE时禁用任何处理,请将""
指定为OnKey
的第二个参数。并且只传递没有第二个参数的键名来启用处理(参见MSDN reference)。
P.S。这可能仅在切换到正在处理的工作表之后才会触发。
答案 1 :(得分:0)
OnKey呼叫的第二部分"拦截"是您必须在常规模块中添加的子名称。
您只需右键单击模块>插入>模块并添加像这样的子:
工作表代码:
Private Sub Worksheet_Activate()
Application.OnKey "{DELETE}", "deleteAction"
End Sub
Private Sub Worksheet_Deactivate()
Application.OnKey "{DELETE}"
End Sub
模块代码:
Sub deleteAction()
Selection.Clear
[... the few things you have to do :) ...]
End Sub