自定义函数错误:“表达式不能在计算列中使用”
Posted
技术标签:
【中文标题】自定义函数错误:“表达式不能在计算列中使用”【英文标题】:Custom functions error: 'the expression cannot be used in a calculated column' 【发布时间】:2011-11-26 05:47:04 【问题描述】:在 Access 2010 中,我尝试在计算列中使用自定义 VBA 函数。我得到“表达式不能在计算列中使用”。
这是我的步骤:
-
启动访问 2010。
创建一个新的数据库“DB”。
创建带有文本列“Column1”的表“Table1”。在 Column1 中创建一个带有“hello”的测试行。
在“创建”功能区上,单击右上角的“模块”,启动 VBA 编辑器。
在 VBA 编辑器“项目”窗口中,有两个项目“ACWZTOOL”和“DB”。选择“DB”并选择“插入”->“模块”。
编写以下代码:
Public Function TestFunc() As String
TestFunc = "test"
End Function
“调试”->“编译 DB”通过,“保存”并关闭 VBA 编辑器。现在“Module1”出现在左侧窗格的“Modules”选项卡中。
在Table1中,创建计算列“Column2”,表达式为“Len([Column1])”,该列正常工作,测试行中的值为5。
把表达式改成“TestFunc()”,会弹出错误。
我尝试了其他一些内置函数,似乎表达式生成器只支持“基本”函数。例如。 “InStrRev()”也无法识别。
【问题讨论】:
请注意,在表格中包含计算字段是不好的做法。计算字段实际上应该只用在可以利用用户定义函数的查询中(假设它们在标准模块中而不是类模块中)。 【参考方案1】:根据this guide,计算列表达式中不允许使用用户定义的函数。相关引述在“阅读”部分:
请注意,计算字段不能调用用户定义的函数, 只有内置函数。此外,您必须提供所有参数 对于您调用的方法,即使参数是可选的。
【讨论】:
谢谢!我在研究过程中没有看到那个页面,但即使我看到了,我也可能不会注意到那个部分。以上是关于自定义函数错误:“表达式不能在计算列中使用”的主要内容,如果未能解决你的问题,请参考以下文章