【发布时间】:2016-09-20 13:16:42
【问题描述】:
我在 excel 2013 中有一个 vba sub ("sub"),它打开另一个工作簿,从中读取一些数据,返回这些数据并关闭新打开的工作簿。可以通过键盘快捷键和上下文菜单中的条目来运行此子程序。
这个调用(这是“UTILS.sub”)工作得很好:
' Add the sub-call to a new context menu entry
Call UTILS.addContextMenuEntry("Caption", 2556, "UTILS.sub")
但是这个调用没有:
' Add the sub-call to a new keyboard shortcut
App.OnKey "+^{M}", "UTILS.sub"
如果我使用键盘快捷键调用 sub,它会中断而不会出现错误。我已经设法通过调试解决了特定的代码行:
'[...]
Application.ScreenUpdating = False
' Open the external Workbook
Set wbHandle = Workbooks.Open("wb.xls", ReadOnly:=True)
MsgBox "Debug"
'[...]
wb.xls 打开(并显示),但 MsgBox "Debug" 没有。 “打开”行之后没有任何东西运行,并且在该行之后没有断点将被命中。另一件奇怪的事:如果我在该行之前使用断点调试 sub 的调用,则一切正常。
如何让 sub 正确运行,而不考虑它是由上下文菜单条目还是键盘快捷键调用的?
【问题讨论】:
-
要么不在快捷方式中包含 Shift 键,要么在打开工作簿的代码中对其进行测试:jkp-ads.com/Articles/WorkbookOpenBug.asp