Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 指定快捷键并隐藏宏_Excel_Vba_Key_Shortcut - Fatal编程技术网

Excel 指定快捷键并隐藏宏

Excel 指定快捷键并隐藏宏,excel,vba,key,shortcut,Excel,Vba,Key,Shortcut,我已经走到了死胡同,我一直在试图隐藏所有的宏,我已经能够做所有的宏,没有一个短键分配的私人子,但每当我使用私人的一个宏,有一个快捷键分配它不起作用,事实上,它禁用了快捷键 我试过了 Private Sub Workbook_Open() Application.OnKey "+Q", "Macro1" End Sub 这不起作用,是的,我把它放在了这个工作簿中……当然,如果我从宏中取出Private并运行它,它就可以正常工作。我试过^+Q,但也不起作用 一定有办法的,不是吗?有两件事: 首先,

我已经走到了死胡同,我一直在试图隐藏所有的宏,我已经能够做所有的宏,没有一个短键分配的私人子,但每当我使用私人的一个宏,有一个快捷键分配它不起作用,事实上,它禁用了快捷键

我试过了

Private Sub Workbook_Open()
Application.OnKey "+Q", "Macro1"
End Sub
这不起作用,是的,我把它放在了这个工作簿中……当然,如果我从宏中取出Private并运行它,它就可以正常工作。我试过^+Q,但也不起作用

一定有办法的,不是吗?

有两件事:

首先,如果你需要大写“Q”,那么你需要做:

Application.OnKey "^+Q", "Macro1"
此外,为了从功能区/宏菜单中隐藏宏,无需将宏设置为私有。以下是我使用的解决方法:

如果宏/子例程至少包含一个参数,则该宏/子例程将被“隐藏”(不显示在功能区/菜单的宏列表中)。因此,一种解决方法是为每个子例程添加一个可选的、无意义的参数,然后将它们作为公共子例程保留

例如:

Sub Macro1(Optional dummy)
    MsgBox "Hi!"
End Sub

上述宏不应出现在可用宏列表中,但它仍应与您的热键配合使用。

+1伟大而具体的解决方法。你有没有试过使用隐藏模块?哦,没有nvm,我太激动了:)