【问题标题】:Alternative way to disable shortcut in Excel在 Excel 中禁用快捷方式的替代方法
【发布时间】:2016-02-06 02:31:28
【问题描述】:

在 Excel 2007-2013 中,我使用 Application.OnKey 禁用快捷方式

Application.OnKey("{F5}", "")

但在 Excel 2016 中,它会引发 Excel 崩溃(稍后会爆炸,然后我按 F5)。我想这是新 Excel 中的一些错误,也许有一天它会被修复,但现在我需要一个解决方法,另一种禁用快捷方式的方法。有什么建议吗?

【问题讨论】:

  • 试试去掉括号:Application.Onkey "{F5}",""
  • @BruceWayne 我不能,它是 C#,但在 VB.NET 和 VBA 中是一样的 - 崩溃,即使没有括号
  • 尝试只使用普通键,看看它是否崩溃。我想知道它是否是关键{F5}ÒnKey一般。
  • @BruceWayne OnKey 一般,F5 为例
  • this thread 有帮助吗?或these 的任何结果?

标签: excel vsto excel-addins


【解决方案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 很快就会发布(如果还没有的话)。

【讨论】:

    猜你喜欢
    • 2018-02-11
    • 2011-08-03
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    相关资源
    最近更新 更多