gpt4 book ai didi

ms-access vba Eval 函数行为

转载 作者:行者123 更新时间:2023-12-03 07:55:47 24 4
gpt4 key购买 nike

我在 Access 表单中有一个公共(public)函数

Public Function PopupProcess() as long
MsgBox Me.ActiveControl
PopupProcess = 1
End Function

当我打电话

eval("forms('MyForm').popupprocess")

它显示一个消息框 2 次。有人知道它为什么这样做吗?

我有 Access 2003 SP3。

编辑:主要思想是从自定义命令栏控件 OnAction 的表单调用函数。也许您有更好的方法从窗体调用命令栏控件的函数。

最佳答案

这是一个非常长期存在的错误,自 access 97 时代以来就存在(大约 4-5 个 access 版本)。

这里的解决方案是永远不要使用表单限定符,只需将以下内容放在您的 on action 事件中,就可以了

=PopUpProcess()

注意前面必须加上=,后缀必须有中括号()

请记住,您实际上可以利用行为来发挥自己的优势。运行的函数将来自当前在屏幕上具有焦点的窗体。这意味着您可以拥有具有相同函数名称的不同表单,并且无论哪个表单具有焦点,具有该名称的函数将从该表单代码模块运行。

更好的是,如果其中一个表单在表单代码模块中没有公共(public)函数,那么将使用标准代码模块中的函数。所以你可能有九种形式,它们都使用主标准代码模块中的标准一个函数。但是,第 10 个表单可能需要运行特殊代码,因此您只需将该功能代码作为公共(public)代码模块放在表单的代码模块中,它将代替标准代码模块中的公共(public)代码运行。

此方法允许您构建适用于许多不同表单的单个自定义菜单栏,但这些表单将从该自定义菜单栏运行不同的代码。这也鼓励您将菜单代码放在它所属的窗体中。

因此,要解决您的问题,只需不使用表单的限定符,而使用上述格式即可。

请注意,您也可以从这些函数传递参数,例如

=PopUpProcess(‘hello’)

然后将函数声明为:

Public Function PopUpProcess(strParm as string)

请记住,当您在功能区中使用 on 操作 Access 2007 时,函数和语法以及我上面所说的所有内容也适用。

关于ms-access vba Eval 函数行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1095355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com