【问题标题】:Assign Shortcut keys within the VBE Window在 VBE 窗口中分配快捷键
【发布时间】:2016-05-01 07:21:32
【问题描述】:

在 Excel 窗口中,我可以通过以下方式为宏分配快捷键:

  1. 进入“开发者”标签
  2. 触摸按钮
  3. 在结果对话框中触摸选项...

我可以从 VBE 窗口中分配这个,而是使用 VBE 菜单栏吗?

【问题讨论】:

  • 可能不是您正在寻找的答案(所以我将其作为评论发布),但我能想到的最好的方法是一些代码设置 Application.OnKey 时执行定义的按键完成。这行得通吗,还是你想要一个专门的菜单选项?
  • @sous2817 将其作为答案发布,我将至少对其进行投票......作为一种解决方法......没关系......

标签: vba excel


【解决方案1】:

Application.OnKey 方法将快捷方式与过程分开(这使得维护变得困难),并且您可能最终会遇到冲突 - 特别是如果您使用宏对话框分配了键 Application.OnKey 财产。而且,当然,您需要在 workbook_open 上运行 SetShortCutKeys 代码,这可能并不总是运行。

幸运的是,可以在 VBA 中以及在过程本身中分配快捷键,但是您需要导出模块,编辑文本文件,然后重新导入。不幸的是,虽然 VBA 确实维护了代码,但快捷键似乎只能在 Excel 中使用。也许这是宿主应用程序可以选择支持的 VBA 功能。

假设您在标准模块中有以下 VBA:

Option Explicit

Public Sub Bar()
  MsgBox "Bar"
End Sub

如果您使用 Excel 中的“宏”对话框,将Bar 宏的快捷键选择为Ctrl+Shift+T,然后将模块导出到文本文件,您会发现模块源为:

Attribute VB_Name = "Module1"
Option Explicit

Sub Bar()
Attribute Bar.VB_ProcData.VB_Invoke_Func = "T\n14"
  MsgBox "Bar"
End Sub

注意Attribute Bar.VB_ProcData.VB_Invoke_Func = "T\n14" 属性,该属性在 VBIDE 中不可见,但由 VBA 在基础源中保留。 T\n14 中的 T 是区分大小写的键(暗示 Shift),我认为\n14 必须引用@987654334 @ 钥匙。通过遵循 VB 属性命名模式和语法,并在您的其他程序中包含类似的行,您可以使用文本编辑器在其他程序中分配快捷键,然后,当您完成后,您可以将修改后的模块重新导入到VBA 项目。

请注意,一旦您导入修改后的模块,您将无法再看到属性行,您需要注意不要更改其中的名称或参数数量该过程,因为 VBIDE 可能会在不警告您的情况下删除基础属性。

【讨论】:

  • 这是一个非常有趣的想法!我也感谢您抽出宝贵时间重新访问此问题.......................我一定会尝试一下!跨度>
  • 根据this post,\n14 指的是“用户函数”,\n3 指的是“Math & Trig”。
【解决方案2】:

或者,如果您想使用 VBA 执行此操作,您可以执行以下操作:

Sub SetShortcutKeys()
With Application
    .OnKey Key:="^+K", Procedure:="YourMacroGoesHere"
End With
End Sub

【讨论】:

  • 遗憾的是,我使用 VBE 得到了一个不同的对话框, 但 OnKey 工作得很好!
  • @Gary'sStudent doh,你是对的!我会把那一点拿出来。抱歉,希望快速不检查。
猜你喜欢
  • 2012-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多