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_Deactivate
是Workbook
函数。 在您的VBAProject中,双击ThisWorkbook
并在顶部的下拉列表中将“General”更改为“Workbook”。 然后,在右侧的下拉列表中,可以selectSheetActivate
和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参考 )。
PS这可能只在切换到正在处理的工作表后触发。