2011-11-26 141 views
4

在Access 2010中,我尝试在计算列中使用自定义VBA函数。我得到'表达式不能用于计算列'。自定义函数错误:'该表达式不能用于计算列'

这里是我的步骤:

  1. 启动Access 2010中
  2. 创建一个新的数据库 “DB”。
  3. 使用文本列“Column1”创建表“Table1”。在Column1中使用“hello”创建一个测试行。
  4. 在“创建”功能区上,单击右上角的“模块”,该模块启动VBA编辑器。
  5. 在VBA编辑器的“项目”窗口中,有两个项目“ACWZTOOL”和“DB”。选择“DB”并选择“插入” - >“模块”。
  6. 写下面的代码:

    Public Function TestFunc() As String 
        TestFunc = "test" 
    End Function 
    
  7. “调试” - > “编译DB” 过去了, “保存” 和关闭VBA编辑器。现在“Module1”出现在左侧窗格的“Modules”选项卡中。
  8. 在Table1中,创建一个计算列“Column2”,并使用表达式“Len([Column1])”,该列适用于测试行中的值为5的情况。
  9. 将表达式更改为“TestFunc()” ,弹出错误。
  10. 我尝试了其他一些内置函数,似乎只有表达式构建器支持“基本”功能。例如。 “InStrRev()”也不被识别。
+0

请注意,在表格中计算字段是很差的做法。计算字段实际上只应用于可以利用用户定义函数的查询(只要它们在标准模块而不是类模块中)。 –

回答

6

根据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

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