自定义函数错误:'该表达式不能用于计算列'
问题描述:
在Access 2010中,我尝试在计算列中使用自定义VBA函数。我得到'表达式不能用于计算列'。自定义函数错误:'该表达式不能用于计算列'
这里是我的步骤:
- 启动Access 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()”也不被识别。
答
根据this guide,在计算列表达式中不允许用户定义的函数。相关报价位于“Read It”部分:
Be aware that calculated fields cannot call user-defined functions, only built-in functions. In addition, you must supply all parameters for methods that you call, even if the parameters are optional.
+0
谢谢!在研究过程中,我没有遇到过这个页面,但即使我做了,我也可能不会注意到该部分。 –
请注意,在表格中计算字段是很差的做法。计算字段实际上只应用于可以利用用户定义函数的查询(只要它们在标准模块而不是类模块中)。 –