Application.OnKey仅适用于一个电子表格

and*_*ndo 3 excel vba excel-vba

我正在尝试使用Application.OnKey在按下Enter键时启动一个函数,并且效果很好。但是问题是,如果我还有其他电子表格打开,它也将应用于这些电子表格。我应该在哪里放置代码,使其仅适用于预期的电子表格?

这是我在“ ThisWorkbook”中拥有的代码:

Private Sub Workbook_Open()
    Application.OnKey "~", "Set_Hyper"
    Application.OnKey "{ENTER}", "Set_Hyper"
End Sub
Run Code Online (Sandbox Code Playgroud)

Sil*_*Bee 5

解决方法:

Private Sub Workbook_Open()
    Application.OnKey "~", "Call_Hyper"
    Application.OnKey "{ENTER}", "Call_Hyper"
End Sub
Run Code Online (Sandbox Code Playgroud)

在模块中放置:

Sub Call_Hyper
If Activeworkbook.Name = "NAME OF YOUR WORKBOOK" Then
Call Set_Hyper
Else
Exit Sub
End If

End Sub
Run Code Online (Sandbox Code Playgroud)

如果另一个工作簿需要相同的快捷方式,则这两个都将导致问题,因此您也可以在切换工作簿时使用以下方式将其停用:

Private Sub Workbook_DeActivate()
    Application.OnKey "~"
    Application.OnKey "{ENTER}"
End Sub
Run Code Online (Sandbox Code Playgroud)

您将需要将第一个宏更改为,Private Sub Workbook_Activate()而不是Private Sub Workbook_Open()以上宏才能正常工作