Excel的VBA清除活动单元格
所以我需要做的几件事情,第一个是运行时按下删除键的宏,所以我发现这一点:Excel的VBA清除活动单元格
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,所以我不知道如何结合这些使用清除功能删除:) ..任何帮助将不胜感激,谢谢。
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
这很好,谢谢! 我确实必须将“Clear”更改为“ClearContents”,这样才能保持格式化,然后我只是在需要运行的代码的其余部分中添加它,它似乎正是我所需要的。 哦,我还必须将“DELETE”更改为“DEL”,否则它将无法识别我的按键。 – Jonathan 2015-04-03 14:58:31
设置一个有效的单元格值,您可以在模块中使用此功能:
Sub SetValue()
ActiveCell = Null ' to clear the contents
End Sub
或者您可以使用OP中的代码。
Worksheet_Activate()
和Worksheet_Deactivate
是Workbook
的功能。在您的VBAProject中,双击ThisWorkbook
并在顶部的下拉列表中将“常规”更改为“工作簿”。然后,在右侧的下拉列表中,您可以选择SheetActivate
和SheetDeativate
。添加这些功能,并填写您的代码以禁用删除您Sheet1
工作键:
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.这只有在切换到正在处理的工作表后才能触发。
这也很有用,谢谢。 – Jonathan 2015-04-03 15:38:58
您可能希望查看worksheet_change事件,一旦您找到了,可以使用target。所以如果你删除了一个单元格,该单元格变成了目标,如果target =“”那么做一些事情。 – Davesexcel 2015-04-02 21:30:00
谢谢,我已经设置了一些东西的工作,没想到尝试添加任何其他:) – Jonathan 2015-04-03 15:37:03