繁体   English   中英

Excel VBA清除活动单元格

[英]Excel VBA Clear Active Cell

因此,我需要做一些事情,首先是在按下Delete键时运行宏,因此我发现了这一点:

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的新手,所以我真的不知道如何将它们结合起来以在delete :)上使用clear函数。任何帮助将不胜感激,谢谢。

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

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

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

Worksheet_Activate()Worksheet_DeactivateWorkbook函数。 在您的VBAProject中,双击ThisWorkbook ,然后在顶部的下拉菜单中将“常规”更改为“工作簿”。 然后,在右侧的下拉列表中,可以选择SheetActivateSheetDeativate 添加以下功能并填写您的代码以在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仅在切换到正在处理的工作表后才可能触发。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM