在Excel 2007-2013中,我使用Application.OnKey来禁用快捷方式
Application.OnKey("{F5}", "")
但是在Excel 2016中它引发了Excel的崩溃(它稍后爆炸,然后我按F5)。我想这是新Excel中的一些错误,也许有一天它会被修复,但是现在我需要一种解决方法,另一种禁用快捷方式的方法。有什么建议吗?
答案 0 :(得分:1)
我找到了如何避免崩溃:
第一步是设置其他内容,而不是Application.OnKey
Application.OnKey("{F5}", " ")
如果您不管它,Excel将显示有关错误宏名称的消息。
我在关键事件发生时暂时设置了Application.DisplayAlerts = false
这条消息:
static int HookCallback(int nCode, IntPtr wParam, IntPtr lParam) {
if (nCode < 0) {
return (int) WinApi.CallNextHookEx(_hookID, nCode, wParam, lParam);
}
if (nCode == HC_ACTION) {
ExcelAddIn.ExcelApp.DisplayAlerts = false;
ExecuteAsync(() => {
ExecuteInUIThread(() => {
OnKeyPress((uint) wParam);
Application.DisplayAlerts = true;
});
});
}
return (int) WinApi.CallNextHookEx(_hookID, nCode, wParam, lParam);
}
但之后我发现这个错误已经修复,fix version即将发布(如果还没有)。