我在Access表单中有一个公共函数
Public Function PopupProcess() as long
MsgBox Me.ActiveControl
PopupProcess = 1
End Function
Run Code Online (Sandbox Code Playgroud)
我打电话的时候
eval("forms('MyForm').popupprocess")
Run Code Online (Sandbox Code Playgroud)
它显示一个消息框2次.有谁知道它为什么这样做?
我有SP3的Access 2003.
编辑:主要的想法是从该表单调用自定义命令栏控件OnAction的函数.也许你有更好的方法从命令栏控件的表单调用函数.
这是一个非常长期存在的错误,自访问97天以来一直存在(大约4-5个版本的访问).
这里的解决方案是永远不要使用表单限定符,只需将以下内容放在你的on action事件中,你就可以了.
=PopUpProcess()
Run Code Online (Sandbox Code Playgroud)
请注意,您必须在其前面加上=,并且后缀必须包含括号()
请记住,您实际上可以利用行为来获得优势.运行的函数将来自当前焦点在屏幕上的表单.这意味着您可以使用具有相同名称的函数的不同表单,并且无论哪个表单具有焦点,具有该名称的函数将从该表单代码模块运行.
更好的是,如果其中一个表单在表单代码模块中没有公共功能,则使用标准代码模块中的函数.所以你可能有九种形式,它们都使用主标准代码模块中的标准一种功能.然而,10日的形式可能需要运行特殊的代码,所以你只需将窗体的代码模块作为公众该函数的代码,这将代替公众对标准的代码模块中运行.
这种方法允许您构建一个适用于许多不同表单的自定义菜单栏,但是那些许多表单将从该自定义菜单栏运行不同的代码.这也鼓励您将菜单代码放在它所属的表单中.
因此,要解决您的问题,只需不要使用表单的限定符,并使用上述格式.
请注意,您也可以从这些函数传递参数
=PopUpProcess(‘hello’)
Run Code Online (Sandbox Code Playgroud)
然后将函数声明为:
Public Function PopUpProcess(strParm as string)
Run Code Online (Sandbox Code Playgroud)
请记住,功能和语法以及我上面提到的所有内容也适用于在功能区中使用on动作进行访问2007时.
| 归档时间: |
|
| 查看次数: |
3365 次 |
| 最近记录: |