ms-access - Access 2013 VBA - 为控件设置新的点击事件

标签 ms-access vba ms-access-2013

我到处寻找这个,这似乎是一个简单的修复,但我似乎无法找到解决方案。我的 Access 2013 表单中有几个 Rectangle 控件,我正在创建一个处理它们的 OnClick 事件。我研究了几种不同的方法,我想我找到了最简单/最干净的方法。我将控件放在一个集合中并更改每个控件的 OnClick 事件。这是我的问题:Access 打开表单并识别出我更改了​​控件的事件,但是一旦我单击该控件,它就会引发错误并且不会执行该事件。

错误:

"The expression On Click entered as the event property setting produced the following error: The expression you entered has a function name that Microsoft Access can't find."



编码:
Private Sub Form_Load()
Dim m_colRectangle As Collection
Dim ctl As Access.CONTROL

Set m_colRectangle = New Collection
For Each ctl In Me.Controls
    If ctl.ControlType = acRectangle Then
        If ctl.Name = "shpTest" Then
            m_colRectangle.Add ctl, ctl.Name

            ctl.OnClick = "=TestClick()" ' <--- Error on this line

        End If
    End If
Next ctl
End Sub

Private Sub TestClick()
    MsgBox "Test"
End Sub

或者,我尝试了一个简单的 shpTest.OnClick = "=TestClick()"在 Form_Load 事件中,这产生了相同的错误。有人有想法么?

最佳答案

错误消息告诉您 Access 找不到 功能 命名为 TestClick。您的 TestClick 是一个子程序,而不是一个函数。

这是一个更简单的示例,在 Access 2010 和 2013 中进行了测试,它演示了将函数用于控件的 .OnClick属性(property)可以工作......但你需要一个功能 . :-)

Private Sub Form_Load()
    Dim ctl As Control
    Set ctl = Me.Controls("txtMathExpresson")
    ctl.OnClick = "=TestClick()"
    Set ctl = Nothing
End Sub

Private Function TestClick()
    MsgBox "Test"
End Function

请注意,我的 Access 2013 测试是使用传统桌面应用程序进行的。如果您正在使用 Access 2013 WebApp,我不知道会发生什么。

关于ms-access - Access 2013 VBA - 为控件设置新的点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26428818/

相关文章:

sql - 将字段映射到 MS Access 中自己的行

vba - 循环访问 EXCEL VBA 字典

vba - 从 Access VBA 运行存储过程

sql - 多个 INNER JOIN SQL Access

php - 仅在 Microsoft Access 更新时将 Microsoft Access 导出到 Mysql

wpf - 我们可以通过 LAN Access Db 共享 Silverlight 应用程序吗

excel - 如何隐藏选项卡并使它们在选择特定选项按钮后出现?

vba - PasteSpecial(运行时错误 1004)

ms-access - 使用 SetParent 使 Access 表单从 Access 中转义

java - 从 Web 应用程序访问 MS Access DB