Excel VBA清除活动单元格

所以我需要做一些事情,第一个是按下删除键时运行macros,所以我发现这个:

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所以我不知道如何结合这些使用清除function删除:)任何帮助将不胜感激,谢谢。

OnKey调用“Intercept”的第二部分是您必须添加到常规模块中的子名称。

你只需右键单击模块>插入>模块,并添加像这样的子:

工作表代码:

 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 

要设置活动单元格值,可以在模块中使用此function:

 Sub SetValue() ActiveCell = Null ' to clear the contents End Sub 

或者你可以使用OP中的代码。

Worksheet_Activate()Worksheet_DeactivateWorkbook函数。 在您的VBAProject中,双击ThisWorkbook并在顶部的下拉列表中将“General”更改为“Workbook”。 然后,在右侧的下拉列表中,可以selectSheetActivateSheetDeativate 。 添加这些函数并填写代码以禁用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参考 )。

PS这可能只在切换到正在处理的工作表后触发。