Application.OnKey过程错误 - 无法运行宏

时间:2015-06-18 02:21:46

标签: excel vba excel-vba

我正在研究一个模块,该模块使用onkey事件来检测是否按下了退格或删除,如果它符合事件的条件,相应的单元格将清除内容。

我有一个程序来启动相应的子程序,但是我收到错误'无法找到宏'

我附上了错误图片和下面的代码,有什么建议吗?

错误图片 enter image description here

代码

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Column = 2 Then
   Application.OnKey Key:="{DEL}", Procedure:="DeleteResources"
   Application.OnKey Key:="{BACKSPACE}", Procedure:="DeleteResources"
End If
End Sub

Public Sub DeleteResources()
ActiveCell.Offset(, 1).ClearContents
ActiveCell.Offset(, 2).ClearContents
ActiveCell.Offset(, 3).ClearContents
End If
End Sub

2 个答案:

答案 0 :(得分:3)

您需要将DeleteResources放入代码Module中,以便它具有完整的公共范围,特别是在您使用过程绑定过程名称时。

此外,您需要删除该方法中的额外End If

答案 1 :(得分:2)

正如一个FYI,因为你已经有了一个可行的解决方案,你实际上不必移动例程,你只需要在名称前面加上容器模块的代码名称:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim sProc As String
    sProc = Me.CodeName & ".DeleteResources"
    If ActiveCell.Column = 2 Then
       Application.OnKey Key:="{DEL}", Procedure:=sProc
       Application.OnKey Key:="{BACKSPACE}", Procedure:=sProc
    End If
End Sub

Public Sub DeleteResources()
    ActiveCell.Offset(, 1).Resize(, 3).ClearContents
End Sub