我正在研究一个模块,该模块使用onkey事件来检测是否按下了退格或删除,如果它符合事件的条件,相应的单元格将清除内容。
我有一个程序来启动相应的子程序,但是我收到错误'无法找到宏'
我附上了错误图片和下面的代码,有什么建议吗?
错误图片
代码
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
答案 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