【问题标题】:Assign keyboard shortcut to run procedure分配键盘快捷键以运行程序
【发布时间】:2012-04-06 18:20:48
【问题描述】:

当我在 VBA 编辑器中按 F5 时,我总是想运行我的“Sub Skynet()”程序。有没有办法给这个过程分配一个键盘快捷键。

【问题讨论】:

    标签: excel vba keyboard-shortcuts


    【解决方案1】:

    F5 是在 VBA 编辑器中运行宏的标准快捷方式。我认为您不能在编辑器本身中添加快捷键。如果你想从 excel 运行宏,你可以从那里分配一个快捷方式。

    在 excel 中按 alt+F8 打开宏对话框。选择要为其分配快捷键的宏并单击选项。在那里您可以为宏分配快捷方式。

    【讨论】:

      【解决方案2】:

      根据Microsoft's documentation

      1. 在“工具”菜单上,指向“宏”,然后单击“宏”。

      2. 在“宏名称”框中,输入要分配给键盘快捷键的宏的名称。

      3. 点击选项。

      4. 如果您想通过按键盘快捷键运行宏,请在快捷键框中输入一个字母。您可以使用 CTRL+ 字母(小写字母)或 CTRL+SHIFT+ 字母(大写字母),其中字母是任意字母键在键盘上。快捷键不能使用数字或特殊字符,如@#

        注意:当包含宏的工作簿打开时,快捷键将覆盖任何等效的默认 Microsoft Excel 快捷键。

      5. 如果您想包含宏的描述,请在“描述”框中键入。

      6. 点击确定。

      7. 点击取消。

      【讨论】:

      • 作为旁注@user1283776,在同时使用ShiftApplication.Workbooks.Open(path) 时要小心,似乎有一个已知的错误导致vb 脚本挂起。在此处查看详细信息:stackoverflow.com/questions/17409524
      • 我有点不同意 4。我可以使用 CTRL + # 和 CTRL+(0-9) 至少通过代码设置它。但是我现在用 ALT+(0-9) 有点麻烦。
      • 这似乎不再可能从 VBE 中实现了。我是通过功能区完成的:开发人员 -> 宏 -> YourMacroName -> 选项。这似乎奏效了。
      • DuleSilver 的评论似乎是 Excel 365 中的答案(至少到 2019 年底)。
      【解决方案3】:

      要为工作表上的按钮分配键盘键,您可以使用此代码,只需将此代码复制到包含该按钮的工作表即可。

      这里Return 指定键,get_detail 是过程名称。

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      
          Application.OnKey "{RETURN}", "get_detail"
      
      End Sub
      

      现在,只要您按下 Enter 按钮,就会在此工作表中调用分配的宏。

      【讨论】:

      • 这个答案提供了更多的灵活性。
      • 也许最好将此代码分配给“Workbook_open”事件。
      • OnKeyWorkbook_Open 的组合让我创建一个适用于每台机器的组合。
      • 可以在此处找到相关文档:msdn.microsoft.com/en-us/library/office/ff197461.aspx
      • 这让我受益匪浅,如果您使用 Application.OnKey "^R" 而不是 "^r",那么当您使用您认为的快捷方式时,您将不得不使用 shift 键CTRL+R
      【解决方案4】:

      以下是如何为 Word 2013 中的自定义宏分配键盘快捷键。 场景是您创建了一个名为“fred”的宏,并且您希望通过键入 Ctrl+f 来执行该宏。

      1. 点击文件、选项。
      2. 单击自定义功能区(在我看来,这是不直观的步骤)。
      3. 点击“键盘快捷键:自定义”按钮。
      4. 在类别列表框中向下滚动到按钮并选择宏。
      5. 宏列表框现在应该显示自定义宏的列表。选择“弗雷德”。
      6. 单击“按新快捷键”文本框将其激活。
      7. 键入 Ctrl+f。这应该出现在文本框中。
      8. 查看“当前键”列表框。在这种情况下,它显示“当前分配给 NavPaneSearch”。
      9. 如果您不介意覆盖该默认值,请单击左下角的“分配”按钮以分配“Ctrl+f:”以运行您的“fred”宏。

      默认情况下,分配保存在 Normal.dotm 文档模板中。如果此键盘分配对该文档是唯一的,那么您可能希望将“保存更改”下拉菜单更改为您的文档名称。

      【讨论】:

      • >"3. 单击“键盘快捷键:自定义”按钮.." 这在我的对话框中不存在..
      【解决方案5】:

      F 功能键(F1,F2,F3,F4,F5 等)可以使用以下代码分配给宏:

      Sub A_1()
          Call sndPlaySound32(ThisWorkbook.Path & "\a1.wav", 0)
      End Sub
      
      Sub B_1()
          Call sndPlaySound32(ThisWorkbook.Path & "\b1.wav", 0)
      End Sub
      
      Sub C_1()
          Call sndPlaySound32(ThisWorkbook.Path & "\c1.wav", 0)
      End Sub
      
      Sub D_1()
          Call sndPlaySound32(ThisWorkbook.Path & "\d1.wav", 0)
      End Sub
      
      Sub E_1()
          Call sndPlaySound32(ThisWorkbook.Path & "\e1.wav", 0)
      End Sub
      
      
      Sub auto_open()
          Application.OnKey "{F1}", "A_1"
          Application.OnKey "{F2}", "B_1"
          Application.OnKey "{F3}", "C_1"
          Application.OnKey "{F4}", "D_1"
          Application.OnKey "{F5}", "E_1"
      End Sub
      

      【讨论】:

        【解决方案6】:

        我自己也遇到了这个问题。我唯一的解决方案是先将宏记录在 Excel 工作簿中。然后,将模块从打开的工作簿拖放到加载项模块中。这将是上述模块的副本,但您分配给它的键盘快捷键将幸好保留下来。

        我只是记录了一个垃圾宏并将其移到那里,然后从我的真实模块后记中复制代码。

        很高兴能弄清楚这一点,我觉得我必须回复我在这个主题上找到的 5 年前的帖子!!!

        【讨论】:

          【解决方案7】:

          我遇到的问题是我想将快捷键与 xlam 中没有可见界面的宏相关联。我发现以下工作有效

          将快捷键与宏关联

          在开发人员选项卡上的 Excel(不是 VBA)中 单击宏 - 不会显示宏 键入子的名称 然后应启用选项按钮 点击它 Ctrl 将是默认值 按住 Shift 并按您想要的字母 例如 Shift 和 A 将 Ctrl-Shift-A 与 Sub 关联

          【讨论】:

          • (1) 使用期限。如果您要将“单击”和“Ctrl”之类的“关键”词大写,那么...阅读您的这部分文本:“Sub 选项按钮应该被启用单击它 Ctrl 将是默认值”。即,大写并不表示前一句以“隐含句点”结尾。 (2) 这没有回答原始问题。
          【解决方案8】:

          您可以在 VBA 编辑器环境中添加一些 ALT+字母快捷键。我添加了 ALT+C 来注释选定的文本行,并添加了 A+X 来取消注释选定的文本行:

          1. 在 VBE 中,右键单击工具栏并选择自定义
          2. (可选)创建新工具栏
          3. 在类别列表框中选择命令选项卡和“编辑”。在命令列表框中找到“评论块”。单击并将其拖动到目标工具栏。左键单击它以打开上下文弹出菜单并选择“图像和文本”。将名称替换为 &C。
          4. 对取消注释块命令重复步骤 3,并将名称替换为 &X。
          5. 关闭自定义弹出窗口。

          有些内置的 Alt+Letter 命令不能用于使用字母的新快捷键:A、D、E、D、H、I、O、Q、R、T、V、W。

          【讨论】:

            【解决方案9】:

            像这样写一个 vba proc:

            Sub E_1()
                Call sndPlaySound32(ThisWorkbook.Path & "\e1.wav", 0)
                Range("AG" & (ActiveCell.Row)).Select 'go to column AG in the same row
            End Sub
            

            然后转到开发人员选项卡,宏,选择宏,单击选项,然后添加快捷方式字母或按钮。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-08-22
              • 1970-01-01
              • 2010-10-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-07-02
              相关资源
              最近更新 更多