热键被再次打开工作簿
问题描述:
我有一个工作簿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 + 米,Book2
打开,我得到一个消息框:
this book: Book1.xlsm
active: Book1.xlsm
所以Book1
运行abc()
,但我猜来自Book2
的.OnKey
的Workbook_Open()
正在导致Book2
重新打开,即使它实际上未调用Book2
的abc()
。
如何防止Book2
重新打开?有没有办法删除它的.OnKey
,但保留Book1
的完好?
答
我确认,我试过了,如果使用Activate和Deactivate事件,它会正常工作。
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,并将其保留为另一个,因为OnKey与Application对象相关,而不是与WB相关。但是,Activate/Deactivate解决方法似乎正常工作。
是的,这里也一样。必须有一些解决方法...:d –
如果我们将它放在workbook_Activate中,并且在Workbook_Deactivate时将其删除,该怎么办? –