在 Excel 中禁用快捷方式的替代方法
Alternative way to disable shortcut in Excel
在 Excel 2007-2013 年,我使用 Application.OnKey 禁用快捷方式
Application.OnKey("{F5}", "")
但在 Excel 2016 年它引发了 Excel 的崩溃(稍后爆炸,然后我按 F5)。我想这是新 Excel 中的一些错误,也许有一天它会被修复,但现在我需要一个解决方法,另一种禁用快捷方式的方法。有什么建议吗?
我找到了避免崩溃的方法:
第一步是设置其他内容,而不是 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 将很快发布(如果还没有的话)。
在 Excel 2007-2013 年,我使用 Application.OnKey 禁用快捷方式
Application.OnKey("{F5}", "")
但在 Excel 2016 年它引发了 Excel 的崩溃(稍后爆炸,然后我按 F5)。我想这是新 Excel 中的一些错误,也许有一天它会被修复,但现在我需要一个解决方法,另一种禁用快捷方式的方法。有什么建议吗?
我找到了避免崩溃的方法:
第一步是设置其他内容,而不是 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 将很快发布(如果还没有的话)。