【问题标题】:Is it possible to create an AutoKeys macro with VBA in Access?是否可以在 Access 中使用 VBA 创建 AutoKeys 宏?
【发布时间】:2016-07-17 23:07:26
【问题描述】:

在 Access 应用程序中,我想以编程方式设置动态键处理程序,以便在按下此键时执行 VBA 函数。

我能够手动创建一个调用该函数的宏和另一个在按下特定键时“调用”第一个宏的 AutoKeys 宏。

现在,我希望能够仅使用 VBA 创建这些宏。这有可能吗?

当然,如果有其他方法可以实现我想要的,我愿意接受建议。

【问题讨论】:

  • 如果您有打开的表单,您可以在表单中使用 KeyPress 事件来调用全局键处理程序
  • 是的,但我希望无论是否打开以及打开什么表单都调用宏。
  • 我不认为你可以。有Application.CreateFormApplication.CreateReport,但对于宏没有任何相似之处。 CurrentDb.Containers("Scripts").Documents 获取所有现有宏,但您无法通过它添加。
  • 我想你可以看看API函数RegisterHotKey。至少 V6 allows to register 当前应用程序的热键。您可以将其注册到隐藏表单

标签: ms-access macros vba


【解决方案1】:

您可以这样做,创建一个名为 clsCustomForm 的类,其中包含此代码

Option Compare Database
Option Explicit

Private WithEvents frmCustomForm As Form

Public Function INIT(frmFormToMakeCustom As Form)
    Set frmCustomForm = frmFormToMakeCustom
    frmCustomForm.OnKeyDown = "[Event Procedure]"
End Function

Private Sub frmCustomForm_KeyDown(KeyCode As Integer, Shift As Integer)
    MsgBox "Hello"
End Sub

然后在一个模块中,您将需要一个公共集合,为每个打开的表单添加一个类,并在每个表单关闭时删除它,我建议使用字典,键作为表单名称和项目作为班级,例如,只是测试(有限的时间),我以 1 形式使用了以下代码,希望这会有所帮助,如果需要,我稍后会有更多时间来显示字典。

Option Compare Database
Option Explicit

Public CUSTOM_FORM As clsCustomForm

Private Sub Form_Load()
   Set CUSTOM_FORM = New clsCustomForm
   CUSTOM_FORM.INIT Me
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 2012-07-26
    • 1970-01-01
    • 2016-08-14
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多