自定义函数错误:“表达式不能在计算列中使用”

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,计算列表达式中不允许使用用户定义的函数。相关引述在“阅读”部分:

请注意,计算字段不能调用用户定义的函数, 只有内置函数。此外,您必须提供所有参数 对于您调用的方法,即使参数是可选的。

【讨论】:

谢谢!我在研究过程中没有看到那个页面,但即使我看到了,我也可能不会注意到那个部分。

以上是关于自定义函数错误:“表达式不能在计算列中使用”的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL宏如何让自定义函数返回错误代码?

SQL自定义函数返回记录

Excel 自定义函数错误更新

自定义错误处理

Access 中的自定义函数返回类型转换错误

Keras 自定义损失函数 dtype 错误