Hotkey正在重新打开工作簿

时间:2015-10-13 23:16:36

标签: vba excel-vba excel

我有一个工作簿Book1,它在开启时设置了热键:

Public Sub workbook_open()

Application.OnKey "^m", "abc"

End Sub

以下是abc()的代码:

Sub abc()

bkName = ActiveWorkbook.Name
runString = "'" & bkName & "'!xyz"
Application.Run runString

End Sub


Sub xyz()

MsgBox "this book: " & ThisWorkbook.Name & vbNewLine & "active: " & ActiveWorkbook.Name    

End Sub

我有一个代码相同的工作簿Book2。当我打开Book1,然后打开Book2,然后关闭Book2,然后按 Ctrl + m ,{{1} }打开,我得到一个消息框:

Book2

this book: Book1.xlsm active: Book1.xlsm 正在运行Book1,但我想abc() .OnKey的{​​{1}}导致Book2重新打开,即使它实际上没有调用Workbook_Open() Book2

如何阻止Book2重新开启?有没有办法删除abc(),但保留Book2完好无损?

1 个答案:

答案 0 :(得分:1)

我确认,如果您使用激活和停用事件,我尝试了它并且它正常工作。

Private Sub Workbook_Activate()
    Application.OnKey "^m", "abc"
End Sub


Private Sub Workbook_Deactivate()
    Application.OnKey "^m"
End Sub

当Book2关闭或停用时,它将删除其OnKey。但是Book1将激活并设置自己的OnKey。它按预期工作,不再重新打开已关闭的工作簿。

我认为您无法从一个WB中删除OnKey并将其保留为另一个WB,因为OnKey与Application对象相关,而不是与WB相关。但Activate / Deactivate的解决方法似乎正常工作。